"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 分钟。这对我有用。
我有一个脚本可以定期对 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 分钟。这对我有用。