2014-01-24 60 views
2

当我使用morphia将文档插入Mongo-DB时,它总是发生com.mongodb.MongoException $ Network:将操作写入服务器异常,也许1分钟 后续的间隔是堆栈信息:

com.mongodb.MongoException$Network: Write operation to server 
    at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:153) 
    at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:115) 
    at com.mongodb.DBApiLayer$MyCollection.update(DBApiLayer.java:327) 
    at com.mongodb.DBCollection.update(DBCollection.java:178) 
    at com.mongodb.DBCollection.save(DBCollection.java:818) 
    at com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:882) 
    at com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:949) 
    at com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:934) 
    at com.yeahmobi.datasystem.conversion.datarepository.mongodb.MongoTransmappingRepository.insert(MongoTransmappingRepository.java:36) 
    at com.yeahmobi.datasystem.conversion.datarepository.merge.MergeTransmappingRepository.insert(MergeTransmappingRepository.java:24) 
    at com.yeahmobi.datasystem.conversion.threads.JumpInserter.saveJumpLog(JumpInserter.java:134) 
    at com.yeahmobi.datasystem.conversion.threads.JumpInserter.run(JumpInserter.java:163) 
    at java.lang.Thread.run(Thread.java:662) 
Caused by: java.net.SocketTimeoutException: Read timed out 
    at java.net.SocketInputStream.socketRead0(Native Method) 
    at java.net.SocketInputStream.read(SocketInputStream.java:129) 
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:218) 
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:258) 
    at java.io.BufferedInputStream.read(BufferedInputStream.java:317) 
    at org.bson.io.Bits.readFully(Bits.java:46) 
    at org.bson.io.Bits.readFully(Bits.java:33) 
    at org.bson.io.Bits.readFully(Bits.java:28) 
    at com.mongodb.Response.<init>(Response.java:40) 
    at com.mongodb.DBPort.go(DBPort.java:142) 
    at com.mongodb.DBPort.go(DBPort.java:106) 
    at com.mongodb.DBPort.findOne(DBPort.java:162) 
    at com.mongodb.DBPort.runCommand(DBPort.java:170) 
    at com.mongodb.DBTCPConnector._checkWriteError(DBTCPConnector.java:100) 
    at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:142) 

是否有任何人达到同样的问题?任何建议表示赞赏。

谢谢

+0

Morphia和MongoDB的版本是什么?您的MongoDB实例前是否有防火墙或负载均衡器?如果间隔持续约1分钟,听起来好像有某种超时发生。 – Stennie

+0

感谢您的评论,我的吗啡版本是0.104,MongoDB是2.4。我hava检查了网络和服务器负载,他们都不高。 LBS被使用,但现在它已被改为使用与IP的直接连接。并且有大约12%插入将失败 –

回答

2

这是不寻常的,不应该在正常运行时经常发生。

尝试从网络/ OS的视角来调试,检查以下内容:

  • 是应用和蒙戈可靠的连接?数据包丢失率和延迟是多少?
  • 应用程序和Mongo之间是否有足够的网络带宽?
  • 应用程序/ Mongo服务器上是否存在任何软件/硬件故障?
  • 服务器在高负载时是否发生?
+1

感谢您的服务员,notwork/Server看起来像确定。但也有12%插入失败。蒙戈客户选项是:MongoClientOptions选项= \t \t \t \t \t MongoClientOptions.builder() \t \t \t \t \t .autoConnectRetry(真) \t \t \t \t \t .maxAutoConnectRetryTime(10) \t \t \t \t \t .socketTimeout (2000) \t \t \t \t \t .socketKeepAlive(true).build() –

+1

问题已解决。当我添加两个datanode时,问题就消失了 –

相关问题