10

node-mongodb-nativeドライバーを介して mongodb と通信する高速アプリがあります。アプリの一部のリクエストが断続的に遅くなります。ドライバー接続プールのサイズがボトルネックであることを確認または除外するための優れたツールまたは戦略はありますか?

ここでは、プール サイズの調整についていくつか説明しますが、かなり決定的ではありません。aheckmann は、通常はデフォルトの 5 で十分であると述べていますが、tinana は多くの同時リクエストでプールを増やすことで大きな利益を得たと述べています。

更新: この質問は、差し迫ったパフォーマンスの問題のトラブルシューティングではなく、チューニングとツール ドライバーのプール サイズを理解するのに役立ちます。質問に少しの文脈を与えるためだけに私の問題を説明しました。

4

1 に答える 1

8

このようなシナリオでは、最初のステップは常に DB から始めることです。

応答が遅いクエリがある場合、それらのクエリはスロー ログに表示されます。プロファイリングの公式ドキュメントをご覧ください。「遅い」クエリのデフォルト値は約 100 ミリ秒であるため、DB が原因でクエリが遅い場合は、そこに証拠が表示されます。

さらに、DB のグラフを見てください。「グラフ」とは、サーバーが何をしているかの Nagios/Cacti/Zabbix/ServerDensity/MMS チャートを意味します。これらがない場合は、そこから始めてください。実際にいくつの接続があるか、または CPU がどのように見えるかがわからない場合、接続プールのサイズを微調整しても役に立ちません。

ドライバー接続プールのサイズがボトルネックであることを確認または除外するための優れたツールまたは戦略はありますか?

DBを除外し、監視を構成したら、接続プールのサイズを開くことができます。これがすべて整ったら。プール サイズを微調整して、(a) 問題を解決し、(b) 問題をさらに引き起こさないようにすることができます。

全体のサイクルが重要です。

接続プールをいじくりまわしても、低速ログと合計接続数を監視していない場合は、さらに問題が発生するだけです。

于 2013-08-11T04:07:43.050 に答える