Railsアプリケーションサーバーを実行しています。セットアップは次のとおりです。
NewRelicを使用して実行中のアプリケーションを監視しています。私は最近、主に好奇心から、リクエストキューイングの遅延の監視を有効にしました。リクエストキューの遅延が実際のRubyコードとデータベースの実行時間と同じかそれより長いことが多いことに驚きました。200ミリ秒までは長いようですよね?
ほとんどのオンライン情報は、リクエストキューがワーカーが利用可能になるのを待っているときにこれが発生することを示していますが、そうではありません。以下に示すように、プロビジョニングされたインスタンスはほとんど使用していません。ピーク時には、使用率が30%を超えることはめったにありません。
他のいくつかの注意事項:
ここで問題は何でしょうか?
200msはそれほどひどいようには見えません。 'request queuing'メトリックは、Webサーバーがリクエストをログに記録してからNew Relicエージェントがロードされるまでの時間の尺度です(_before_filters
_の後)。これを測定する方法は、問題が存在しない場合、問題があるように見える可能性があります。レイテンシーは素晴らしく、均一であり、ワーカーが不足している、またはリソース/ CPUが不足していることを示すスパイクはありません。 _watch passenger-status
_を使用してこれを確認できます。 Linuxユーティリティを使用して、サーバーのリソース使用量をローカルで再確認することもできます。
top, iotop, vmstat, sar (systat)
それでも最適化を探したいですか? NewRelicエージェントの前に実行されるものをすべてチェックしてください。考えられる問題点:
少し掘り下げる必要があります。幸運を!