MongoDB聚合期间"服务器x超时"

dbr*_*anj 7 mongodb node.js docker alpine-linux

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

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

Myk*_*yuk 7

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

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

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

mongodb://localhost:27017/test?maxPoolSize=2&socketTimeoutMS=60000
Run Code Online (Sandbox Code Playgroud)

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