gpt4 book ai didi

java - 从 Java 驱动程序读取时 Mongodb 随机超时 - 无法调用某些内容

转载 作者:行者123 更新时间:2023-12-01 04:56:25 27 4
gpt4 key购买 nike

我有一个应用程序,当客户端尝试登录时,该应用程序正在从 Mongo DB 查找一个文档。虽然这在大多数情况下都有效,但有时会在“com.mongodb.MongoException$Network:无法调用某些内容:...”下面引发超时

一旦请求失败(在预先配置的超时之后),下一个请求似乎工作正常,但其他一些调用会随机失败并出现相同的异常。堆栈跟踪的相关部分是

at com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:295)
at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:257)
at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:310)
at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:295)
at com.mongodb.DBCollection.findOne(DBCollection.java:727)
at com.mongodb.DBCollection.findOne(DBCollection.java:669)

我正在使用 Spring 的 MongoTemplate 来获取集合,然后查询它以查找单个文档。我的代码片段如下所示

BasicDBObject query = new BasicDBObject();
query.put("myIntParam", 283);
DBCollection collection = mongoTemplate.getDb().getCollection(collectionName);
DBObject foundDocument = collection.findOne(query);

相同的 mongo 模板实例在应用程序中用于不同集合中的其他读写目的(我认为建议每个应用程序仅使用一个实例)。

问题通常是在我让应用程序闲置一段时间后出现的。我在 Ubuntu 12.10 服务器上运行(我的本地环境有 Ubuntu 12.10 的桌面版本),并在 tomcat 中使用 JDK 1.7。 Java 驱动程序版本是 2.10.1。提供以下配置选项

mongoOptions.connectTimeout=5000
mongoOptions.socketTimeout=60000
mongoOptions.socketKeepAlive=true
mongoOptions.maxWaitTime=15000
mongoOptions.autoConnectRetry=true

有什么建议或想法吗?

提前致谢

最佳答案

去掉mongoOptions.socketTimeout=60000项,或者捕获超时异常然后自行处理。

关于java - 从 Java 驱动程序读取时 Mongodb 随机超时 - 无法调用某些内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14055570/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com