我有一个脚本,可在mongodb集合上定期运行聚合。随着数据集的增长,聚合所花费的时间也随之增长。我的聚合脚本最近停止了一致的工作,并且错误日志显示: error: { [MongoError: server <x> timed out] name: 'MongoError', message: 'server <x> timed out' } 我已经尝试调试了这一点,并且我可以找到的唯一模式是,这种超时似乎仅在聚合时间超过2分钟(正确的超时)时发生2m左右)。有人为此提供其他调试提示吗?2分钟的事情给我的印象是,我只需要在某处配置一些超时,但是我无法弄清楚我在哪里或者是否陷入了红色鲱鱼陷阱。
error: { [MongoError: server <x> timed out] name: 'MongoError', message: 'server <x> timed out' }
关于系统配置:此聚合脚本是在基于阿尔卑斯的docker(v1.9.1)容器中运行的node.js(v5.9.1)应用程序。它使用mongodb节点驱动程序(v2.1.19)。运行mongod(v3.2.6)的单个mongodb服务器(尽管这也在具有replSet的单独环境中发生)
mongodb
对于日志时间聚合,我遇到了同样的问题。我想我有适合您的解决方案。
我发现该选项socketTimeoutMS对此负责。检查您的mongo_client.js默认socketTimeoutMS值。对我来说是2min。Mongodb模块版本2.1.18。
socketTimeoutMS
2min
因此,只需将此选项添加到您的url中:
mongodb://localhost:27017/test?maxPoolSize=2&socketTimeoutMS=60000
它将设置timeout为10分钟。那对我有用。
timeout