我有一个mongo分片群集。
我在应用程序中遇到间歇性问题(从mongo获取数据时)看到这些日志,
引起:com.mongodb.MongoQueryException:查询因错误而失败 服务器上的代码6和错误消息“HostUnreachable” 10.95.107.220:27017 在com.mongodb.operation.FindOperation $ 1.call(FindOperation.java:722) 在com.mongodb.operation.FindOperation $ 1.call(FindOperation.java:711) 在com.mongodb.operation.OperationHelper.withConnectionSource(OperationHelper.java:470) 在com.mongodb.operation.OperationHelper.withConnection(OperationHelper.java:414) 在com.mongodb.operation.FindOperation.execute(FindOperation.java:711) 在com.mongodb.operation.FindOperation.execute(FindOperation.java:83) 在com.mongodb.Mongo $ 3.execute(Mongo.java:822) 在com.mongodb.Mongo $ 3.execute(Mongo.java:809) 在com.mongodb.DBCursor.initializeCursor(DBCursor.java:870) 在com.mongodb.DBCursor.hasNext(DBCursor.java:141) 在com.mongodb.DBCursor.one(DBCursor.java:679) 在com.mongodb.DBCollection.findOne(DBCollection.java:829) 在com.mongodb.DBCollection.findOne(DBCollection.java:792) 在com.mongodb.DBCollection.findOne(DBCollection.java:739) 在org.springframework.data.mongodb.core.MongoTemplate $ FindOneCallback.doInCollection(MongoTemplate.java:2169) 在org.springframework.data.mongodb.core.MongoTemplate $ FindOneCallback.doInCollection(MongoTemplate.java:2153) 在org.springframework.data.mongodb.core.MongoTemplate.executeFindOneInternal(MongoTemplate.java:1905)
问题是间歇性的,但现在仍然经常发生。
我看过,我能够手动连接所有mongo盒子,每个mongo都可以telnet到端口27017上的其他mongo实例。
这背后的任何推理?广告我该如何解决?任何帮助都将受到高度赞赏。
PS:Mongo java驱动程序为3.6,ulimit也设置为大于32000,如建议here