Webアプリのパフォーマンスを向上させようとしています。アプリ自体のプロファイリングでは、応答時間はかなり許容範囲内(100ms〜200ms)であることがわかりましたが、ApacheBenchを使用してアプリをテストすると、応答時間が1秒を超えることがあります。ログをよく見ると、request_time
とupstream_response_time
の間に大きな不一致があることがあります。
"GET /wsq/p/12 HTTP/1.0" 200 114081 "-" "ApacheBench/2.3" 0.940 0.286
"GET /wsq/p/31 HTTP/1.0" 200 114081 "-" "ApacheBench/2.3" 0.200 0.086
upstream_response_time
はWebアプリでの私のプロファイリングに非常に近いですが、request_time
は最初のリクエストで1秒に近いです。
この不一致の原因は何ですか?
request_time
は、受信した最初のバイトから送信した最後の応答バイトまで記録されることを理解しています。ネットワークの状態やクライアントの問題の影響を受ける可能性があります。平均request_time
をできるだけ減らすにはどうすればよいですか?
request_time
が高いのは、接続が遅いクライアントが原因である可能性があり、そのために多くのことを行うことができません。したがって、高いrequest_time
は必ずしもサーバーやアプリケーションのパフォーマンスを表すとは限りません。
プロファイリングの際にrequest_time
に多くの時間を費やすべきではなく、代わりにアプリケーションの応答時間(つまり、upstream_response_time
)。
そうは言っても、あなたができることがいくつかあり、mayはrequest_time
に影響を与えます。それらのいくつかは次のとおりです。