0

私はnettyを使用して複数のクライアント要求を送信しており、NioClientSocketChannelFactoryを構成するのに最適な方法を考えていました。すなわち:

NioClientSocketChannelFactory.NioClientSocketChannelFactory(Executor bossExecutor, Executor workerExecutor, int workerCount)

ClientBootstrapとChannelが1つあり、異なるホストに複数のリクエストを書き込んでいますが、オプションを設定およびブートストラップしていません。例として、イテレータを使用して100個のリクエストをプッシュする場合があります。

これをどのように構成すればよいですか?シングルワーカーとキャッシュプールエグゼキューターのさまざまな組み合わせを、最大1つまたは100のワーカーで試しました。ここではいくつかの例を示します。

  1. 単一のエグゼキュータと1つのワーカーを使用する場合、マルチスレッドリクエストを提供するように見えますが、カウントを100に設定すると、シングルスレッドで表示されます。
  2. キャッシュされたプールエグゼキュータを使用する場合、カウントを1に設定することもより効率的であるように思われます。労働者数を増やすと遅くなるようです。

では...数百以上の同時リクエストが必要な場合に基づいて、最高のパフォーマンスを実現するためにファクトリをどのように構成する必要がありますか?

4

1 に答える 1

1

最善の策は、キャッシュされたスレッド プールを使用し、利用可能なプロセッサに基づいて Netty にワーカー数を決定させることです。または、単純に次のようにします。

... = new NioClientSocketChannelFactory();
于 2012-10-14T11:57:21.727 に答える