我有一个脚本定期在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)
答案 0 :(得分:5)
我在日志时间聚合方面遇到了同样的问题。我想我有解决方案。
我发现选项socketTimeoutMS
对此负责。
检查您的mongo_client.js默认socketTimeoutMS
值。对我来说是2min
。 Mongodb模块版本2.1.18。
所以只需将此选项添加到您的网址:
mongodb://localhost:27017/test?maxPoolSize=2&socketTimeoutMS=60000
将timeout
设置为10分钟。这对我有用。