9

我有一个脚本可以定期在 mongodb 集合上运行聚合。随着数据集的增长,聚合所需的时间也在增长。我的聚合脚本最近一直停止工作,并且错误日志显示: error: { [MongoError: server <x> timed out] name: 'MongoError', message: 'server <x> timed out' } 我已经尝试过调试,我能找到的唯一模式是这种超时似乎只发生在聚合时间超过 2 分钟时(它超时正确约 2m)。有没有人对此有额外的调试技巧?2 分钟的事情给我的印象是我只需要在某个地方配置一些超时,但我无法弄清楚我在哪里或者我是否只是落入了一个红鲱鱼陷阱。

关于系统配置:这个聚合脚本是一个 node.js (v5.9.1) 应用程序,运行在基于 alpine 的 docker (v1.9.1) 容器中。它使用mongodb节点驱动程序 (v2.1.19)。运行 mongod (v3.2.6) 的单个 mongodb 服务器(尽管这也发生在具有 replSet 的单独环境中)

4

1 回答 1

10

对于日志时间聚合,我遇到了同样的问题。我想我有适合你的解决方案。

我发现该选项socketTimeoutMS对此负责。检查您的 mongo_client.js 默认socketTimeoutMS值。对我来说是2min。Mongodb 模块版本 2.1.18。

所以只需将此选项添加到您的网址中:

mongodb://localhost:27017/test?maxPoolSize=2&socketTimeoutMS=60000

它将设置timeout为 10 分钟。这对我有用。

于 2016-08-01T09:52:42.467 回答