即使将写入关系设置为已确认,将值设置为高达20秒,也会发生MongoDB SocketTimeoutException?

时间:2015-10-01 06:58:48

标签: java mongodb mongodb-java

因此我们使用mongodb分片设置,使用mongos将查询路由到适当的分片。早期套接字超时的值没有改变,所以它是默认的无限。我们已经看到一些线程长时间阻塞了我们想要避免的某些查询,因此我们最初将超时设置为5秒。这导致了很多SocketTimeoutException的出现。

ERROR pool-83-thread-23 Error while writing to mongos router
com.mongodb.MongoException$Network: Operation on server 127.0.0.1:27013 failed
    at com.mongodb.DBTCPConnector.doOperation(DBTCPConnector.java:217) ~[mongo-java-driver-2.12.4.jar:na]
    at com.mongodb.DBCollectionImpl.receiveWriteCommandMessage(DBCollectionImpl.java:491) ~[mongo-java-driver-2.12.4.jar:na]
    at com.mongodb.DBCollectionImpl.writeWithCommandProtocol(DBCollectionImpl.java:430) ~[mongo-java-driver-2.12.4.jar:na]
    at com.mongodb.DBCollectionImpl.insertWithCommandProtocol(DBCollectionImpl.java:387) ~[mongo-java-driver-2.12.4.jar:na]
    at com.mongodb.DBCollectionImpl.insert(DBCollectionImpl.java:186) ~[mongo-java-driver-2.12.4.jar:na]
    at com.mongodb.DBCollectionImpl.insert(DBCollectionImpl.java:165) ~[mongo-java-driver-2.12.4.jar:na]
    at com.mongodb.DBCollection.insert(DBCollection.java:93) ~[mongo-java-driver-2.12.4.jar:na]
    at com.mongodb.DBCollection.insert(DBCollection.java:78) ~[mongo-java-driver-2.12.4.jar:na]
    at com.mongodb.DBCollection.insert(DBCollection.java:120) ~[mongo-java-driver-2.12.4.jar:na]

然后我们将超时时间增加到20秒,但问题仍然存在,尽管不那么频繁。令我们更加困惑的是,我们的统计计数器告诉我们,在我们的应用程序的峰值负载下,通常我们的所有写入操作都在15ms内完成。我们将写作关注设置为已确认。我们缺少什么?在读/写操作中超时线程时还需要考虑其他因素吗?或者是java驱动程序的东西? (我们正在使用2.12.4)。

提前致谢。

0 个答案:

没有答案