MongoDb를 사용하고 있는데 DB에서 레코드를 읽는 중 문제가 있습니다. 나는 커서에서 그들을 얻을 수 있어요하지만 난) cursor.hasNext를 (사용하여 커서에서 레코드를 얻으려고 할 때 나에게 다음과 같은 예외가 있습니다 :Mongo + Java + SocketTimeOut
com.mongodb.MongoInternalException: couldn't get next element
at com.mongodb.DBCursor.hasNext(DBCursor.java:459)
Caused by: java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:146)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:275)
at java.io.BufferedInputStream.read(BufferedInputStream.java:334)
at org.bson.io.Bits.readFully(Bits.java:35)
at org.bson.io.Bits.readFully(Bits.java:28)
at com.mongodb.Response.<init>(Response.java:35)
at com.mongodb.DBPort.go(DBPort.java:101)
at com.mongodb.DBPort.go(DBPort.java:66)
at com.mongodb.DBPort.call(DBPort.java:56)
at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:211)
at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:220)
at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:220)
at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:266)
at com.mongodb.DBCursor._check(DBCursor.java:309)
at com.mongodb.DBCursor._hasNext(DBCursor.java:431)
at com.mongodb.DBCursor.hasNext(DBCursor.java:456)
어쩌면 내 데이터로이 문제를 직면하고를 지속적으로 증가하여 커서에 더 많은 레코드가 생깁니다. 또한 내가 액세스하는 데이터베이스는 원격 컴퓨터에 있습니다.
이 문제에 대한 도움이 필요합니다.
감사합니다.
모든 레코드를 검색 할 수 있습니까? 이 문제의 원인이 될 수있는 방화벽 규칙이 있습니까? 타임 아웃을 시작하기까지 얼마나 걸렸습니까? –
이 오류를 생성하는 사용중인 코드를 붙여 넣을 수 있습니까? 표준 튜토리얼과 비교하면 어떻습니까? 이 오류가 발생하기 전에 문서를 가져오고 있습니까? 아니면 첫 번째 문서를 다시 가져 오기 전에 * 발생합니까? –
당신과 당신의 서버가 비슷한 방화벽이 없도록 할 수 있습니까? 이는 지나치게 공격적인 네트워크 구성원에 의한 시간 초과로 인해 네트워크 포트가 닫힌 경우와 같습니다. –