私はApacheHttpClientを使用して、ローカルホスト上のHTTP / 1.0(キープアライブなし)サーバーに約20POSTリクエスト/秒でクエリを実行しています。TCP_NODELAYを次のように有効にしました。
val httpParams = new BasicHttpParams()
HttpConnectionParams.setTcpNoDelay(httpParams, true)
val client = new DefaultHttpClient(connectionManager, httpParams)
それにもかかわらず、1分間に数回、そのような要求を送信するために10〜200ミリ秒のランダムな遅延が見られます(サーバーで測定すると、遅延は送信にあります)。ガベージコレクターの一時停止ではないことを確認しました。何が問題になる可能性がありますか?
同じレートのC++クライアントでサーバーにクエリを実行しようとしましたが、そのようなランダムな遅延はないので、HttpClientの問題だと思います。
更新:jetty HttpClientの実装を確認しましたが、同じ問題があります。これはFreeBSD上のJVMの問題でしょうか?これをLinuxでテストする必要がありますが、Linuxサーバーが手元にありません。