4

私は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サーバーが手元にありません。

4

1 に答える 1

2

私はここでWindowsを使用して同じ問題を抱えています。私の場合、HttpClient は約 1 秒の遅延を導入していましたが、投稿を最初に実行しようとしたときだけです (私は順番にいくつか実行しています)。ローカルホストへの「偽の」投稿を作成して実行するという回避策を試します(IOExceptionを除く)。そうすることで、実際のサービスを呼び出すときの遅延が約 1 秒から約 100 ミリ秒に短縮されました。私はまだそれ以上改善できませんでした。

于 2011-05-06T01:27:22.103 に答える