2016-06-18 5 views
6

mongodbコレクションで定期的に集約を実行するスクリプトがあります。データセットが大きくなるにつれて、集計にかかる時間も長くなりました。 error: { [MongoError: server <x> timed out] name: 'MongoError', message: 'server <x> timed out' } 私はこれをデバッグしようとしましたが、このタイムアウトは、集約が2分以上かかる場合にのみ発生するようです2m前後のタイムアウト)。誰もこれのための追加のデバッグのヒントを持っていますか? 2分のことは、どこかのタイムアウトを設定する必要があるという印象を与えていますが、私がどこにいるのか、あるいは私が赤ちゃんの罠に陥っているのか分かりません。MongoDB集約中に「サーバーxタイムアウト」

システム構成について:この集約スクリプトは、アルパインベースのドッカー(v1.9.1)コンテナで動作するnode.js(v5.9.1)アプリケーションです。 mongodbノードドライバ(v2.1.19)を使用します。 mongodb(v3.2.6)を実行している別の環境でも起こっていますが、mongodbサーバは1つです。

答えて

5

ログの集計にも同じ問題があります。私はあなたに解決策があると思います。

オプションsocketTimeoutMSがそれに責任を負うことが判明しました。 mongo_client.jsのデフォルト値socketTimeoutMSを確認してください。私にとっては2minでした。 Mongodbモジュールのバージョン2.1.18。

だからあなたのURLには、このオプションを追加します。

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

それはtimeout〜10分を設定します。それが私のトリックです。