2014-01-24 3 views
2

morphia를 사용하여 Mongo-DB에 문서를 삽입 할 때 항상 com.mongodb.MongoException이 발생합니다 $ Network : 서버 예외에 작업을 쓰고, 사람이 같은 문제를 충족

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) 

있습니까 : 어쩌면 일분 추시의 간격은 스택 정보는? 어떤 sugguestion이 인정됩니다.

감사합니다.

+0

Morphia & MongoDB의 버전은 무엇입니까? MongoDB 인스턴스 앞에 방화벽이나로드 밸런서가 있습니까? 간격이 약 1 분이면 일관되게 시간 초과가 발생합니다. – Stennie

+0

의견을 주셔서 감사합니다. 내 morphia 버전은 0.104이고 MongoDB는 2.4입니다. 나는 네트워크 및 서버로드를 확인했는데, 모두가 무거웠습니다. LBS가 사용되었지만 이제는 IP와의 직접 연결을 사용하도록 변경되었습니다. 그리고 약 12 ​​%의 삽입이 실패했습니다. –

답변

2

이것은 일반적이지 않으며 정상적인 작동 중에 자주 발생하지 않아야합니다.

  • 응용 프로그램과 몽고 신뢰성 사이의 연결입니다 :

    네트워킹/OS 관점에서 디버깅하려고 다음 확인? 패킷 삭제율 및 대기 시간은 어떻게됩니까?

  • 응용 프로그램과 Mongo 사이에 충분한 네트워크 대역폭이 있습니까?
  • 응용 프로그램/Mongo 서버에 소프트웨어/하드웨어 문제가 있었습니까?
  • 서버가 과부하 상태에 있었습니까?
+1

anwsers에 감사드립니다. notwork/Server는 ok처럼 보입니다. 그러나 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

문제가 해결되었습니다. 두 개의 데이터 노드를 추가 할 때 문제가 사라졌습니다. –

관련 문제