この章では、asadmin コマンド行ユーティリティーを使用して、Sun GlassFishTM Enterprise Server v3 環境でスレッドプールを管理する手順について説明します。
ここでは、次のテーマを取り上げます。
これらのタスクを 管理コンソール を使用して実行する場合の手順は、管理コンソール のオンラインヘルプで説明します。
JavaTM プラットフォームの仮想マシン (Java 仮想マシン、または JVMTM マシン) は、多数の実行スレッドを同時にサポートすることができます。パフォーマンスの向上に役立つように、Enterprise Server は 1 つまたは複数のスレッドプールを維持します。特定のスレッドプールを、コネクタモジュール、ネットワークリスナー、または ORB (Object Request Broker) に割り当てることができます。
1 つのスレッドプールで、複数のコネクタモジュールおよびエンタープライズ Bean を処理できます。「要求スレッド」は、アプリケーションコンポーネントへのユーザーの要求を処理します。Enterprise Server は要求を受け取ると、その要求をスレッドプール内の使用可能なスレッドに割り当てます。スレッドはクライアントの要求を実行し、結果を返します。たとえば、現在ビジー状態のシステムリソースが必要な場合、スレッドはリソースが解放されるのを待ってから、リソースの使用を要求に許可します。
アプリケーションからの要求用に確保するスレッドの最小数と最大数を指定できます。スレッドプールはこれら 2 つの値の間で動的に調整されます。
ここでは、次のテーマを取り上げます。
スレッドプールを作成するには、リモートモードで create-threadpool サブコマンドを使用します。
サーバーは、指定された最小スレッドプールサイズに従って、アプリケーション要求用に確保するスレッドを割り当てます。その数は、指定された最大スレッドプールサイズまで増加できます。プロセスで使用可能なスレッドの数を増やすと、プロセスが同時に応答できるアプリケーション要求数が多くなります。
1 つのリソースアダプタまたはアプリケーションが Enterprise Server のすべてのスレッドを占有すると、スレッド不足が発生します。この状況は、Enterprise Server のスレッドを複数のスレッドプールに分割することで回避できます。
サーバーが実行されていることを確認します。
リモートサブコマンドには、実行中のサーバーが必要です。
create-threadpool(1) サブコマンドを使用して、新しいスレッドプールを作成します。
サブコマンドのオプションについては、このサブコマンドのマニュアルページを参照してください。
変更内容を適用するために、Enterprise Server を再起動します。
「ドメインの再起動」を参照してください。
Web コンテナによって使用されるスレッドプールでは、再起動が必要ない場合もあります。
この例では、threadpool-l を作成します。
asadmin> create-threadpool --maxthreadpoolsize 100 --minthreadpoolsize 20 --idletimeout 2 --workqueues 100 threadpool-1 Command create-threadpool executed successfully |
コマンド行に asadmin help create-threadpool と入力して、このサブコマンドの完全な構文とオプションを確認することもできます。
既存のスレッドプールを一覧表示するには、リモートモードで list-threadpools サブコマンドを使用します。
サーバーが実行されていることを確認します。
リモートサブコマンドには、実行中のサーバーが必要です。
list-threadpools(1) サブコマンドを使用して、既存のスレッドプールを一覧表示します。
この例では、既存のスレッドプールを一覧表示します。
asadmin> list-threadpools threadpool-1 Command list-threadpools executed successfully |
コマンド行に asadmin help list-threadpools と入力して、このサブコマンドの完全な構文とオプションを確認することもできます。
set サブコマンドを使用して、指定したスレッドプールの値を更新します。
list-threadpools(1) サブコマンドを使用して、既存のスレッドプールを一覧表示します。
set(1) サブコマンドを使用して、スレッドプールの値を変更します。
スレッドプールはドット表記名で識別されます。
変更内容を適用するために、Enterprise Server を再起動します。
「ドメインの再起動」を参照してください。
Web コンテナによって使用されるスレッドプールでは、再起動が必要ない場合もあります。
この例では、max-thread-pool-size を元の値から 8 に変更します。
asadmin> set server.thread-pools.thread-pool.http-thread-pool.max-thread-pool-size=8 Command set executed successfully |
コマンド行に asadmin help set と入力して、このサブコマンドの完全な構文とオプションを確認することもできます。
既存のスレッドプールを削除するには、リモートモードで delete-threadpool サブコマンドを使用します。スレッドプールがネットワークリスナーによって参照されている場合、そのプールの削除は失敗します。
サーバーが実行されていることを確認します。
リモートサブコマンドには、実行中のサーバーが必要です。
list-threadpools(1) サブコマンドを使用して、既存のスレッドプールを一覧表示します。
delete-threadpool(1) サブコマンドを使用して、指定したスレッドプールを削除します。
変更内容を適用するために、Enterprise Server を再起動します。
「ドメインの再起動」を参照してください。
Web コンテナによって使用されるスレッドプールでは、再起動が必要ない場合もあります。
この例では、threadpool-1 を削除します。
asadmin> delete-threadpool threadpool-1 Command delete-threadpool executed successfully |
コマンド行に asadmin help delete-threadpool と入力して、このサブコマンドの完全な構文とオプションを確認することもできます。