1

3.6.3 で NioWorkerPool.rebuildSelectors() を呼び出す場所を見つけようとしています。

Netty を 3.5.11 から 3.6.x リリースのいずれかにアップグレードした後、Nio ベースの ServerSocket チャネル ファクトリで通信を実行するとすぐに CPU の問題が発生します。デフォルト プール内の 200 のスレッドすべてが約 45 ~ 55% の CPU で実行を開始し、戻ることはありません。select()...poll() ロジックに座っていることを示すすべてのスタック。

私の問題は、いつこれを呼び出す必要があるのか​​ 、どこに公開されているのかわからないことです。NioWorkerPool は channelfactory インスタンス内で非公開です。ChannelFactory で NioWorkerPool にアクセスするための推奨される方法は何ですか - これがこの呼び出しを行う場所であると仮定します。

ありがとう、ボブ

4

1 に答える 1

1

を作成するときに、自分で作成したaとaをNioServerSocketChannelFactory指定できます。ショートカットコンストラクターを使用する代わりに、それらを受け入れるコンストラクターを使用します。そうすれば、それらのオブジェクトへの参照がすでにあり、必要に応じてそれらを呼び出すことができます。NioBossPoolNioWorkerPool

電話rebuildSelectors()で問題が解決するかどうかをお知らせください。このような問題に遭遇するのは非常に簡単ではないため、回避策が問題の軽減に役立つかどうかは非常に興味があります。

于 2013-02-26T18:52:08.660 に答える