JBoss EAP 7、IO サブシステムワーカー構成

JBoss EAP 7、IO サブシステムワーカー構成

これについてあまり情報が見つからないので、ここで質問します...

IO サブシステム ワーカー構成の「Io スレッド」と「タスク最大スレッド」の設定の主な用途は何ですか?

私が読んだところすべてにおいて、「Io スレッド」はサーバーが処理できる同時要求の数を指定し、「タスク最大スレッド」はサーバーが処理できる同時要求の最大数であると述べられています。

つまり、「Io スレッド」を 50 に設定すると、JBoss は 50 のブラウザ要求を同時に処理できるということですか?

私のサイトでは、15 秒以内に 1500 人の同時ユーザーにサービスを提供できる必要があります。また、各リクエストの完了には 3 秒以上かかることはありません。これには、ブラウザーに必要な HTML、JS、CSS、およびすべての jpg ファイルのダウンロードが含まれます。

これは、「Io スレッド」を 100 などの大きな数値に設定し、「タスク最大スレッド」を 150 に設定する必要があることを意味しますか?

「タスク最大スレッド」を 150 や 250 に設定してみましたが、サイトの速度が低下するようです。

これら 2 つの設定がどのように機能するかを説明できる人はいますか?

答え1

通常、ユーザー接続ごとに個別の IO スレッドを用意する必要はありません。ただし、速度低下を回避するために、同時ユーザーと同じ数のタスク スレッドが必要になる場合があります。デフォルトを試して、アプリケーションでどのように機能するかを確認できます。次のサポート記事を参照してください。

EAP 7.2 には効率化のための追加のコア スレッド構成があることに注意してください。

更新:より包括的な説明が必要な場合は、完全なRed Hat Enterprise Application Platform パフォーマンスチューニングガイド

アップデート2: EAP 7はUndertowを使用しているため、IOとワーカースレッドが何をするのかを理解するために、アンダートウ ドキュメントいくつかの手がかりを与えるはずです:

IO およびワーカースレッドの管理

XNIO ワーカーは、IO スレッドと、ブロッキング タスクに使用できるスレッド プールの両方を管理します。一般に、非ブロッキング ハンドラーは IO スレッド内から実行され、サーブレット呼び出しなどのブロッキング タスクはワーカー スレッド プールにディスパッチされます。

答え2

@IWantSimpleLife @akostadinov が参照したドキュメントでは、設計と「ブロッキング IO」作業がハンドラー作業とどのように分離されているかが説明されています。あなたの質問に対する答えとして、「IO スレッド」と「タスク最大スレッド」は直接関連していないと答えるのは正しいと思います。これらは 2 つの別々のスレッド グループを参照しているため、そう言います。1 つ目は「ワーカー IO スレッド」で、これは、nio チャネルとイベントをリッスンする IO 関連の「読み取り」および「書き込み」ハンドラーの初期グループを表します。理想的には、IO プールには 1 つのスレッドのみが必要です。一度もないブロッキング(ネットワークまたはファイル)処理を実行します。他のグループは一般的に「ワーカータスクスレッド」グループと呼ばれます。これは、ブロッキング作業を実行することに専念しています。設定この 2 番目のグループのサイズは「タスク最大スレッド」になります。

関連情報