18.10. スレッド管理


18.10.1. サーバー側のスレッド管理

各 HornetQ サーバーは、一般的な使用のために単一のスレッドプールを維持し、スケジュール使用のためにスケジュールスレッドプールを維持します。Java のスケジュールスレッドプールは標準のスレッドプールを使用するように設定できません。それ以外は、スケジュールされたアクティビティーとスケジュールされていないアクティビティーの両方に単一のスレッドプールを使用できます。
古い(ブロッキング)IO を使用する場合は、別のスレッドプールを使用して接続を処理します。古い IO は接続ごとにスレッドを必要とするため、多くの接続が行われるとプールが使い切られるため、標準プールからスレッドを取得することは推奨されません。これにより、他の処理を行うスレッドが残っていないため、サーバーがハングします。サーバーが多くの同時接続を処理する必要がある場合は、古い IO ではなく NIO を使用する必要があります。
新しい IO(NIO)を使用する場合、HornetQ はデフォルトで受信パケットを処理するために .getRuntime().availableProcessors()Runtime によって報告されるコア(またはハイパースレッド)の数の 3 倍のスレッドを使用します。この値をオーバーライドするには、トランスポート設定に nio-remoting-threads パラメーターを指定してスレッド数を設定できます。

18.10.1.1. サーバースケジュールスレッドプール

サーバースケジュールスレッドプールは、定期的に実行する必要がある、または遅れて実行する必要があるサーバーサイドの多くのアクティビティーに使用されます。内部的には、java.util.concurrent.ScheduledThreadPoolExecutor インスタンスにマッピングします。
このプールによって使用されるスレッドの最大数は、scheduled-thread-pool-max-size パラメーターを使用して standalone.xml または domain.xml で設定されます。デフォルト値は 5 スレッドです。通常、このプールには少ない数のスレッドで十分です。

18.10.1.2. 汎用サーバースレッドプール

汎用スレッドプールは、サーバー側でほとんどの非同期操作に使用されます。内部的には、java.util.concurrent.ThreadPoolExecutor インスタンスにマッピングします。
このプールによって使用されるスレッドの最大数は、thread-pool-max-size パラメーターを使用して standalone.xml または domain.xml で設定されます。
-1 の値を使用すると、スレッドプールには上限がなく、要求を満たすのに十分なスレッドがない場合には、新しいスレッドがオンデマンドで作成されます。後でアクティビティーが従うと、スレッドはタイムアウトになり、閉じられます。
n の値(n はゼロより大きい正の整数)が使用される場合、スレッドプールはバインドされます。要求数が増え、プールに空きスレッドがなく、プールが満杯になると、スレッドが利用可能になるまでリクエストはブロックされます。バインドされたスレッドプールは、上限が低すぎると、デッドロックの状況が発生する可能性があるため、注意して使用することが推奨されます。
thread-pool-max-size のデフォルト値は 30 です。

18.10.1.3. 期限切れリーパースレッド

キュー内の期限が切れたメッセージをスキャンするためにサーバー側でも単一のスレッドが使用されます。このスレッドは、独自の設定可能な優先順位で実行する必要があるため、このためにスレッドプールのいずれかを使用することはできません。

18.10.1.4. 非同期 IO

非同期 IO には、ネイティブレイヤーからイベントを送受信するためのスレッドプールがあります。これは、接頭辞 HornetQ-AIO-poller-pool を持つスレッドダンプ上にあります。HornetQ は、ジャーナル上で開かれたファイルごとに 1 つのスレッドを使用します(通常は 1 つです)。
また、libaio で書き込みを呼び出すために使用されるスレッドも 1 つあります。これは、libaio で、パフォーマンスの問題を引き起こすコンテキスト切り替えを回避するために行われます。このスレッドは、接頭辞 HornetQ-AIO-writer-pool を持つスレッドダンプにあります。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.