2012-05-07 15 views
6

私はning非同期のhttpクライアントを使用して、ノンブロッキングの良さを実現しています。リンゴとリンゴのテスト(非ブロッキング対ブロッキング)を行うと、非ブロッキングバージョンがより多くのリクエストサンプルを処理しているのが見えますが、非同期httpクライアントはブロッキング対応のスレッドと比較してスレッドを増やしています。これが期待されているのか、私が紛失しているのか非同期httpクライアント(ning)がさらにスレッドを作成していますか?

は、ここで私は接続のスレッドプールを作成していますストレステスト

Async Http Client 
jMeter - 2 threads, 120 seconds, 1 sec ramp up 
Peak threads : 270 
Heap usage: 600mb 
Peak cpu usage: 30% 
Total samples: 18228 

Blocking version 
jMeter - 2 threads, 120 seconds, 1 sec ramp up 
Peak threads: 118 
heap usage: 260mb 
cpu usage: 18% 
total samples: 1472 

からの数字です(それらを再利用)

AsyncHttpClientConfig.Builder builder = new AsyncHttpClientConfig.Builder(); 
builder.setRequestTimeoutInMs(2000); 
builder.setMaximumConnectionsPerHost(10); 
builder.setMaximumConnectionsTotal(100); 
client = new AsyncHttpClient(builder.build()); 

は、私がここで行方不明です何かはありますか?スレッドを作成しているのを見るためにスレッドダンプを見てみましたが、役に立たないものは見つかりませんでした。 私は、非同期httpクライアントのI/O完了時にコールバックを発生させるために、各http接続が生成されるスレッドがあることを考えています。

答えて

11

EDIT 2015年11月16日

レポが移動したように見えます。使用されるThreadFactoryを変更できるthis lineを参照してください。これが設定されていないと、デフォルトのものを使用しているように見えます。これは、ChannelManager hereによって使用されます。

また、/死んだリンクは、コードで簡単に見に

削除wが見here

ORIGINALような単純なクライアント上でそれを設定することができます

- それはアプリケーションのスレッドプールのように見えるが、エグゼキュータのサービスを使用していますこれはキャッシュされたスレッドプールで、必要に応じてスレッドを作成します。ビルダのセッターを使用して、クライアントが使用するエグゼキュータ・サービスを設定できます。

+0

グレート、本当にありがとうございました – Vinodh

+0

https://github.com/AsyncHttpClient/async-http-client/blob/master/api/src/main/java/org/asynchttpclient/AsyncHttpClientConfig.java あなたがピンポイントで特定する気だろう最近のリリースで変更されたように、ライン160少し(関数名のように、そこに見える) –

+0

ここのリンクは動作していません! –

関連する問題