"Server x timed out" 在 MongoDB 聚合期间

"Server x timed out" during MongoDB aggregation

我有一个脚本可以定期对 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)

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

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

所以只需将此选项添加到您的 url 中即可:

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

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