MongoDB聚合期间“服务器x超时”

时间:2016-06-18 16:30:44

标签: node.js mongodb docker alpine

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

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

1 个答案:

答案 0 :(得分:5)

我在日志时间聚合方面遇到了同样的问题。我想我有解决方案。

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

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

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

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