|
|
サーバでのマルチスレッドとマルチコンテキストの動作
マルチスレッドおよびマルチコンテキスト・アプリケーションがアクティブの場合、サーバで行われる処理は次の 3 つのフェーズに分類できます。
起動フェーズ
起動フェーズで行われる処理は、コンフィギュレーション・ファイルの MINDISPATCHTHREADS と MAXDISPATCHTHREADS パラメータの値によって異なります。
MINDISPATCHTHREADS の値 |
MAXDISPATCHTHREADS の値 |
処理内容 |
---|---|---|
0 |
> 1 |
|
> 0 |
> 1 |
作業フェーズ
このフェーズでは、次の処理が行われます。
サーバ・ディスパッチ・スレッド
クライアントのサービス要求への応答として、サーバ・ディスパッチャは設定可能な最大数まで複数のスレッドを 1 つのサーバに生成します。このサーバは、各種のクライアント要求に同時に割り当てることができます。サーバが tpinit() を呼び出してクライアントになることはできません。
各ディスパッチ・スレッドは、別々のコンテキストと対応付けられています。この機能は会話型サーバと RPC サーバの両方で有用です。特に、会話型サーバではこの機能を利用できないと、ほかの会話接続がサービスを待っている間、クライアント側の会話をアイドル状態で待つことになります。
この機能は、UBBCONFIG(5) ファイルの SERVERS セクションと TM_MIB(5) の次のパラメータで制御されます。
UBBCONFIG パラメータ |
MIB パラメータ |
デフォルト値 |
---|---|---|
MINDISPATCHTHREADS |
TA_MINDISPATCHTHREADS |
0 |
MAXDISPATCHTHREADS |
TA_MAXDISPATCHTHREADS |
1 |
THREADSTACKSIZE |
TA_THREADSTACKSIZE |
0 (オペレーティング・システムのデフォルト値) |
アプリケーション生成のスレッド
オペレーティング・システム関数を使用して、アプリケーション・サーバ内に新しいスレッドを追加できます。アプリケーション生成のスレッドは、次のように動作します。
アプリケーション内にスレッドを生成する場合、次の制約があります。
BBL によるシステム・プロセスの正常性チェック
BBL は定期的にサーバを検証します。特定のサービス要求の実行に時間がかかりすぎている場合、BBL はそのサーバを強制終了します。そして、指定されている場合は、そのサーバを再起動します。BBL がマルチコンテキスト・サーバを強制終了した場合、プロセスを強制終了した結果として、実行中のそのほかのサービス呼び出しも終了します。
また、BBL はタイムアウト値を超えてメッセージの受信を待機しているプロセスまたはスレッドにメッセージを送信します。ブロッキング・メッセージ受信への呼び出しがタイムアウトを示すエラーを返します。
システムで保持されるサーバ・スレッドの統計
BEA Tuxedo システムでは、各サーバに対して次の統計情報が保持されます。
ユーザ・ログで保持されるスレッド固有の情報
userlog(3c) を使用すると、各アプリケーション内の各スレッドに対して次の識別情報が記録されます。
process_ID.thread_ID.context_ID
スレッドがサポートされていないプラットフォームやシングルコンテキスト・アプリケーションに対しては、thread_ID フィールドと context_ID フィールドにプレースホルダが出力されます。
TM_MIB(5) では、この機能は T_ULOG クラスの TA_THREADID フィールドと TA_CONTEXTID フィールドでサポートされています。
完了フェーズ
アプリケーションをシャットダウンすると、tpsvrthrdone(3c) と tpsvrdone(3c) が呼び出されて、リソース・マネージャのクローズなど、必要な終了処理が行われます。
関連項目
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|