0

AChannelは 1 つの中に付いていEventLoopますChannel.Unsafe#register。レジストレーションは、モジュロ演算によって配布されEventExecutorGroup#nextます。AChannelHandlerContextは 1 つのスレッド (多くの場合、 と同じスレッド) にバインドされますChannel

チャネルが不均等に登録解除されたり、ワークロードがこれらのチャネル間で不均等に分散されたりする可能性があります。偶然にも、1 つのスレッドで完全なワークロードを処理できる場合があります。

このケースを防ぐパターンはありますか、それとも避けられない構造上の問題ですか?

4

1 に答える 1

0

引数 1 を指定して NioEventLoopGroup を構築すると、強制的に 1 つのスレッドのみを使用することができます。それ以外は、EventLoop にあるチャネルの数を計算し、これに基づいて次のチャネルを選択することによってのみ改善できると思います。ただし、一部のチャネルは他のチャネルよりも重い作業を行う可能性があるため、これでも良い方法ではない可能性があります。

于 2013-03-22T10:31:38.020 に答える