bea ホーム | 製品 | dev2dev | support | askBEA
BEA Logo Tuxedo
 ドキュメントのダウンロード   サイトマップ   用語集 
検索
0

Tuxedo アプリケーション実行時の管理

 Previous Next Contents View as PDF  

BEA Tuxedo ATMI アプリケーションのチューニング

ここでは、次の内容について説明します。

注記 BEA Tuxedo CORBA 環境でのアプリケーションのチューニングについては、『BEA Tuxedo CORBA アプリケーションのスケーリング、分散、およびチューニング』を参照してください。

 


MSSQ セットの使用

注記 BEA Tuxedo CORBA サーバでは、MSSQ セット (複数サーバ、単一キュー) がサポートされていません。

BEA Tuxedo ATMI 環境で MSSQ のスキーマを使用すると、ロード・バランシングを行うことができます。1 つのキューには、常に同じサービスを提供する複数のサーバが対応しています。ある要求がサーバのキューに送信され、そのキューが MSSQ セットの一部である場合、メッセージがキューから取り出されて、使用可能な最初のサーバに送られます。このようにして、個々のキューのレベルでロード・バランシングが行われます。

MSSQ を構成するサーバには、そのサーバ固有の応答キューを設定する必要があります。このサーバがほかのサーバに対して要求を行った場合、その応答は要求元のサーバに返されなければなりません。つまり、MSSQ 内のほかのサーバによってキューから取り出されないようにする必要があります。

MSSQ セットを動的に設定し、キューの負荷状況に応じてサーバの生成や削除を自動的に行うことができます。

次の表は、どのような場合に MSSQ セットの使用が適しているかを示しています。

MSSQ セットの使用が適している場合

MSSQ セットの使用が適さない場合

2 〜 12 台のサーバがある。

サーバ数が多すぎる (ただし、MSSQ セットを多数使用して対処することも可能)。

バッファ・サイズが適度な大きさである (1 つのキューに十分収まる程度)。

バッファ・サイズが 1 つのキューでいっぱいになる場合。

すべてのサーバが同じサービスのセットを提供する。

サーバごとにサービスが異なる場合。

メッセージのサイズが比較的小さい。

キューがいっぱいになるほどサイズの大きいメッセージがサービスに渡される。キューがいっぱいになると、非ブロッキング送信が失敗するか、またはブロッキング送信がブロックされます。

サービスのターンアラウンド・タイムが最適であり、一貫性がある。



 

次は、MSSQ セットの使用が適している場合と適さない場合の例を日常生活の中から示しています。

 


ロード・バランシングの有効化

システム・トラフィックが原因でアプリケーションの性能が低下するのを避けるため、アプリケーション全体に対してロード・バランシング・アルゴリズムを実行できます。ロード・バランシングを使用すると、ロード・ファクタがシステム内の各サービスに適用され、各サーバの負荷の合計を監視できます。各サービス要求は、負荷が最も少ない適切なサーバに送信されます。

システム全体に対してロード・バランシングを実行するには、次の手順に従います。

  1. アプリケーションを長時間実行します。

  2. 各サービスの実行にかかる平均時間を記録します。

  3. コンフィギュレーション・ファイルの RESOURCES セクションを次のように設定します。

注記 このアルゴリズムは効果的ですが、コストがかかるため必要な場合にのみ使用してください。アルゴリズムが必要となるのは、2 つ 以上のキューを使用する複数のサーバによってサービスが提供される場合のみです。1 つのサーバのみによって提供されるサービス、または MSSQ (複数サーバ、単一キュー) にある複数のサーバによって提供されるサービスは、ロード・バランシングを必要としません。

 


サービスの実行時間の測定

サービスの実行時間は、以下のどちらかの方法で測定できます。

 


サービスへの優先順位の割り当て

優先順位を割り当てることにより、アプリケーション内のデータの流れを強力に制御できます。つまり、重要度の高いリクエストに迅速にサービスを提供し、重要度の低いリクエストには後でサービスを提供することができます。また、特定のユーザや特定の状況に応じて、いつでも優先順位を設定することができます。

BEA Tuxedo サービスに対する優先順位は、以下のどちらかの方法で割り当てることができます。

優先順位の設定例

たとえば、サーバ 1 が、サービス A、B、および C を提供するとします。サービス A および B の優先順位は 50、サービス C の優先順位は 70 です。サービス C に対するリクエストは、サービス A または B に対するリクエストより常に先にキューから取り出されます。サービス A および B に対するリクエストは、互いに等しくキューから取り出されます。システムは、10 回に 1 回の割合で FIFO (first-in、first-out) 順序でリクエストをキューから取り出し、メッセージがキューで無制限に待機しないようにします。

PRIO パラメータを使用して性能を高める

PRIO は、サーバのキュー内にあるサービスの優先順位を決定するパラメータです。ただし、このパラメータの使用には注意が必要です。いったん優先順位が割り当てられると、キューからのメッセージの取り出しに時間がかかる場合があります。キューのメッセージの順序によっては、頻繁に取り出されないメッセージもあります。たとえば、キュー内に A、B、C の 3 つのメッセージがあり、C に対して 10 回以上のリクエストが送信されると、A と B は、10 回中 1 回しかキューから取り出されません。つまり、サービスの性能が低下し、ターンアラウンド・タイムが遅くなる可能性があります。

PRIO パラメータを使用するかを決定する場合は、以下の点を考慮してください。

 


複数のサービスをサーバへバンドルする

複数のサービスをサーバにパッケージ化する最も簡単な方法は、まったくパッケージしないことです。しかし、サービスをパッケージ化しないと、サーバ、メッセージ・キューおよびセマフォの数が許容範囲を超える原因となります。サービスをまったくバンドルしない (まとめない) 場合と細かくバンドルする (まとめる) 場合では、それぞれ長所と短所があります。

サービスのバンドルが必要な場合

次のうち、いずれかの状況または条件に当てはまる場合は、サービスをバンドルする (まとめる) ことをお勧めします。

同じサーバに、お互いを呼び出すサービス (呼び出し依存型サービス) を 2 つ以上設定しないでください。このサービスを設定すると、サーバは自身を呼び出し、デッドロックの原因となります。

 


システム全体のパフォーマンスの向上

パフォーマンスを向上するための以下の方法は、BEA Tuxedo リリース 8.0 以降で適用できます。

サービスとインターフェイスをキャッシュする

BEA Tuxedo リリース 8.0 以降では、サービス・エントリとインターフェイス・エントリをキャッシュして、掲示板をロックせずに、キャッシュされたサービスやインターフェイスのコピーを使用することができます。これによってパフォーマンスが大幅に向上します。特に、クライアント数が多く、サービスの数が少ないシステムで有効です。

コンフィギュレーション・ファイルの MACHINCES および SERVERS セクションに追加された SICACHEENTRIESMAX オプションを使用すると、プロセスやサーバ側で保持できるサービス・キャッシュ・エントリの最大数を指定できます。

クライアントやアプリケーションによっては、キャッシュが効果的でない場合があるため、キャッシュ・サイズを制御する環境変数 TMSICACHEENTRIESMAX が追加されています。また、TMSICACHEENTRIESMAX にはデフォルト値が設定されているため、以前のバージョンからアップグレードする場合は新たに設定を変更する必要がありません。キャッシュ・サイズの肥大化はクライアントにとって望ましくないため、TMSICACHEENTRIESMAX を使用してキャッシュ・エントリ数を制御することもできます。

サービス・キャッシュの制限事項

キャッシュ機能には以下の制限事項があります。

注記 SICACHEENTRIESMAX オプションの詳細については、『ファイル形式、データ記述方法、MIB、およびシステム・プロセスのリファレンス』の UBBCONFIG(5) および TM_MIB(5) のセクションを参照してください。

TMSICACHEENTRIESMAX 変数の詳細については、『ファイル形式、データ記述方法、MIB、およびシステム・プロセスのリファレンス』の tuxenv(5) のセクションを参照してください。

認可および監査によるセキュリティを削除する

BEA Tuxedo リリース 7.1 では、AAA (Authentication、Authorization、Auditing) セキュリティ機能が追加され、AAA プラグイン関数を使用したインプリメンテーションでは BEA Tuxedo の管理オプションによるセキュリティをベースにする必要がなくなりました。この結果、BEA Tuxedo 7.1 の主要なコード・パスでは、BEA Engine の AAA セキュリティ関数が常に呼び出されます。しかし、多くのアプリケーションではセキュリティ機能が使用されないため、BEA Engine のセキュリティ呼び出しによるオーバーヘッドは不要です。

BEA Tuxedo リリース 8.0 以降では、コンフィギュレーション・ファイルの RESOURCES セクションの OPTIONS パラメータに、NO_AA オプションが追加されています。NO_AA オプションを使用すると、認可および監査に関するセキュリティ関数の呼び出しを回避できます。認証はほとんどのアプリケーションで必要であるため、この機能をオフにすることはできません。

NO_AA オプションを有効にすると、以下の SECURITY パラメータ が影響を受けます。

注記 NO_AA オプションの詳細については、『ファイル形式、データ記述方法、MIB、およびシステム・プロセスのリファレンス』の UBBCONFIG(5) および TM_MIB(5) のセクションを参照してください。

マルチスレッド化されたブリッジを使用する

ブリッジ・プロセスは、マルチ・マシン Tuxedo ドメイン内のホスト・マシンごとに 1 つずつ実行されます。このため、あるホスト・マシンからドメイン内のほかのホスト・マシンへのトラフィックは、すべて同じブリッジ・プロセスを通して送信されます。ブリッジ・プロセスでは、シングルスレッド実行機能とマルチスレッド実行機能がサポートされています。マルチスレッド化されたブリッジ処理を使用すると、データ・スループットを向上できる場合があります。マルチスレッド化されたブリッジ処理を有効にするには、UBBCONFIG ファイルの MACHINES セクションの BRTHREADS パラメータを設定します。

BRTHREADS=Y と設定すると、ブリッジ・プロセスはマルチスレッドで実行されます。BRTHREADS=N と設定するか、デフォルトの N のままにすると、ブリッジ・プロセスはシングルスレッドで実行されます。

ローカル・マシンを BRTHREADS=Y に、リモート・マシンを BRTHREADS=N に設定することも可能ですが、この場合のマシン間のスループットはシングルスレッド化されたブリッジ・プロセスより劣ります。

BRTHREADS パラメータを使用する際は、以下の点にも注意してください。

注記 Tuxedo マルチ・マシン・ドメインでは、BRTHREADS=Y に設定しても、旧バージョンの Tuxedo が稼働するマシンには影響しません。

マルチスレッド化されたブリッジの詳細については、『ファイル形式、データ記述方法、MIB、およびシステム・プロセスのリファレンス』の UBBCONFIG(5) で説明する MACHINES セクションの BRTHREADS パラメータを参照してください。

マルチスレッド処理をオフにする

BEA Tuxedo は、汎用的なスレッド機能を備えています。ただし、アーキテクチャの汎用性により、重要な状態情報を保護するため、すべての ATMI 呼び出しでミューテックス関数を呼び出す必要がありました。また、ライブラリで使用されるエンジンやキャッシュ・スキーマの階層構造により、さらにミューテックスが必要になります。スレッドを使用しないアプリケーションでは、これらのオプションをオフにすると、アプリケーション・コードを変更しなくても大幅にパフォーマンスを向上させることができます。

マルチスレッド処理をオフにするには、TMNOTHREADS 環境変数を使用します。この環境変数を設定することにより、新たに API 関数やフラグを導入しなくても、個々のプロセスでスレッドをオンまたはオフにすることができます。

TMNOTHREADS=Y に設定すると、ミューテックス関数の呼び出しが回避されます。

注記 TMNOTHREADS の詳細については、『ファイル形式、データ記述方法、MIB、およびシステム・プロセスのリファレンス』の tuxenv(5) のセクションを参照してください。

XA トランザクションをオフにする

すべての BEA Tuxedo アプリケーションで XA トランザクションを使用するのではないにもかかわらず、すべてのプロセスで、内部トランザクション関数の呼び出しによってトランザクション処理の負担がかかります。BEA Tuxedo リリース 8.0 以降では、XA トランザクションを使用しないアプリケーションでパフォーマンスを向上させるため、コンフィギュレーション・ファイルの RESOURCES セクションの OPTIONS パラメータに NO_XA フラグが追加されています。

NO_XA フラグをセットすると、XA トランザクションは許可されなくなります。NO_XA オプションが指定されている場合、GROUPS セクションで TMS サービスを設定しようとすると失敗するので注意してください。

注記 NO_XA オプションの詳細については、『ファイル形式、データ記述方法、MIB、およびシステム・プロセスのリファレンス』の UBBCONFIG(5) および TM_MIB(5) のセクションを参照してください。

 


システムの IPC 要件の決定

システムの IPC 要件は、以下のシステム・パラメータを使用して決定します。

tmboot -c コマンドを使用すると、コンフィギュレーションの IPC に関する最低条件を表示できます。

次の表は、このようなシステム・パラメータの説明です。

表 8-1 IPC 資源のチューニング・パラメータ

パラメータ

説明

MAXACCESSSERS

セマフォの数を指定します。

メッセージ・キューの数は、「MAXACCESSERS + 応答キューを持つサーバ数 (MSSQ セットのサーバ数 + MSSQ セット数)」とほぼ同じです。

MAXSERVERSMAXSERVICES、および MAXGTT

MAXSERVERSMAXSERVICESMAXGTT の 3 つのパラメータ、および ROUTINGGROUPNETWORK の 3 つのセクションの全体のサイズは、共用メモリのサイズに影響します。これらのパラメータの相関関係を計算式に表そうとすると複雑になりますが、単純に tmboot -c または tmloadcf -c を実行すると、アプリケーションで最低限必要な IPC の要件を計算することができます。

キューに関連するカーネル・パラメータ

クライアントとサーバ間のバッファ・トラフィックのフローを管理するためにチューニングします。キューの最大サイズ (バイト単位) は、アプリケーションで最も大きいメッセージを処理できる大きさに設定します。通常、キューの 75 〜 85% は使用中です。この割合が低いとキューが無駄になり、割合が高いとメッセージ送信が頻繁にブロックされる原因になります。

アプリケーションが送信するメッセージに対して最大のバッファを処理できるように最大サイズを設定します。

最大待ち行列長 (キューに同時にとどまることができる最大メッセージ数) は、アプリケーションにおけるオペレーションに適した大きさに設定します。

キューの平均使用率と平均長を測定するには、アプリケーションをシミュレートするか、または実行します。これにより、アプリケーションの実行前にチューニング可能なパラメータを評価でき、アプリケーションの性能分析後にアプリケーションを正しくチューニングできます。

大規模なシステムでは、オペレーティング・システム・カーネルのサイズに対するパラメータ設定の効果を分析します。効果が認められない場合には、アプリケーション・プロセスの数を減らすか、またはアプリケーションをさらに多くのマシンに分散して MAXACCESSERS を減らします。


 

 


IPC パラメータの調整

以下のアプリケーション・パラメータを設定すると、システムの効率を高めることができます。

MAXACCESSERS、MAXSERVERS、MAXINTERFACES、および MAXSERVICES パラメータの設定

MAXACCESSERSMAXSERVERSMAXINTERFACES、および MAXSERVICES の各パラメータを設定すると、セマフォと共用メモリにかかる負担が増えます。これらのパラメータを使用する前にはこの点を考慮し、システムのニーズを満たす最適な値を設定する必要があります。将来システムを移行する場合に備え、余分な資源を確保しておくことも必要です。また、システムに同時にアクセスできるクライアント数を設定できるようにしておく必要もあります。これらのパラメータには、デフォルトで IPC 資源が適度に割り当てられていますが、必要最低限の値を設定するのが賢明です。

MAXGTT、MAXBUFTYPE、および MAXBUFSTYPE パラメータの設定

デフォルト値がアプリケーションで適切かどうかを判断するには、システム内のクライアント数とそれらのクライアントがトランザクションにコミットする時間の割合を掛けた値を算出します。この値が 100 に近い場合は、MAXGTT パラメータ値を増やす必要があります。MAXGTT パラメータの値を増やすと、次のような結果になります。

アプリケーションで使用するバッファ型の数を制限するには MAXBUFTYPE パラメータを設定し、バッファのサブタイプの数を制限するには MAXBUFSTYPE パラメータを設定します。MAXBUFTYPE の現在のデフォルト値は 16 です。ユーザ定義のバッファ型を 8 つ以上作成する予定がある場合は、MAXBUFTYPE に高い数値を設定してください。このパラメータの値を特に指定しない場合は、デフォルト値が使用されます。

MAXBUFSTYPE の現在のデフォルト値は 32 です。多くの VIEW サブタイプを使用する予定がある場合は、このパラメータに高い数値を設定してください。

SANITYSCAN、BLOCKTIME、BBLQUERY、および DBBLWAIT パラメータの設定

システムが遅いプロセッサで稼動している場合 (使用率が高い場合など) 時間間隔を調整するタイミング・パラメータである SANITYCANBLOCKTIME、およびトランザクションのタイムアウト値を増やします。

ネットワークの動作が遅い場合は、BLOCKTIMEBBLQUERY および DBBLWAIT パラメータの値を増やします。

チューニング関連パラメータの推奨値

次の表は、アプリケーションのチューニングに使用するシステム・パラメータと推奨値です。

パラメータ

目的

MAXACCESSERSMAXSERVERSMAXINTERFACES、および MAXSERVICES

必要最低限の値を設定します (IPC 資源を確保するため)。クライアントを追加できるように設定します。

MAXGTTMAXBUFTYPE、および MAXBUFSTYPE

MAXGTT の値を増やして、多数のクライアントを許容します。トランザクション処理を行わないアプリケーションでは、MAXGTT を 0 に設定します。

ユーザ定義のバッファ型を 8 つ以上作成する場合に限り、MAXBUFTYPE を使用します。

多くの種類の VIEW サブタイプを使用する場合は、MAXBUFSTYPE の値を増やします。

BLOCKTIMETRANTIME、および SANITYSCAN

システムの動作が遅い場合は、値を増やします。

BLOCKTIMETRANTIME, BBLQUERY、および DBBLWAIT

ネットワークの動作が遅い場合は、値を増やします。


 

 


システム・トラフィックの測定

一定の交通量がある道路では渋滞が起こるように、システムでも同様にボトルネックが発生します。実際の高速道路を走る車両数は、道路に渡されたケーブルによってカウントされます。つまり、このケーブルの上を車両が通過するたびに、カウンタの値が増加します。

これと同様に、サービスのトラフィックを測定することができます。たとえば、サーバの起動時 ( tpsvrinit() の呼び出し時) に、グローバル・カウンタを初期化して開始時間を記録することができます。以降、特定のサービスが呼び出されるたびにカウンタ値は増加します。tpsvrdone() 関数を呼び出してサーバをシャットダウンすると、最終カウンタ値と終了時間が記録されます。このメカニズムにより、一定期間に特定サービスのビジー状態がどの程度であるかを判断できます。

BEA Tuxedo システムでは、問題のあるデータ・フローのパターンが原因でボトルネックが生じます。ボトルネックを検出する最も早い方法は、関連するサービスに要する時間をクライアント側から測定することです。

システム・ボトルネックの検出方法

たとえば、クライアント 1 が結果を出力すると 4 秒かかるとします。time() を呼び出すと、サービス A に対する tpcall が動作を 3.7 秒遅らせていることがわかり、さらにサービス A を開始点と終了点で監視すると、その動作に 0.5 秒かかっています。tmadminpq コマンドを使用すると、キューがいっぱいであることがわかります。

一方、サービス A の実行に 3.2 秒かかるとします。サービス A の個々の部分はまとめて測定できます。サービス A がサービス B に対して tpcall を発行し、この動作に 2.8 秒かかっていることも考えられます。この場合、キュー時間またはメッセージ送信ブロッキング時間を分離できます。適切な時間を識別すると、アプリケーションはトラフィックの処理に戻されます。

time() を使用すると、次の項目の所要時間を測定できます。

UNIX プラットフォームにおけるボトルネックの検出

UNIX システムの sar(1) コマンドを使用すると、システムのボトルネックの検出に役立つ性能に関する情報が表示されます。sar(1) は、次の目的に使用できます。

次の表は、sar(1) コマンドのオプションの説明です。

オプション

目的

-u

CPU の使用率を示します。システムが、ユーザ・モード、システム・モード、待機状態 (ブロック I/O を待つプロセスを持ったままアイドル状態)、およびアイドル状態である時間を割合で示します。

-b

バッファのアクティビティ (システム・バッファとディスク (またはほかのブロック・デバイス) との間で送信される 1 秒あたりのデータ転送数など) を報告します。

-c

すべての種類のシステム・コールと、fork(2) や exec(2) などの特定のシステム・コールのアクティビティを報告します。

-w

システムのスワッピング・アクティビティ (スワップインとスワップアウトの転送数など) を監視します。

-q

専有時のキューの長さの平均および専有時間の割合を報告します。

-m

メッセージとシステム・セマフォのアクティビティ (1 秒あたりのプリミティブの数) を報告します。

-p

ページング・アクティビティ (アドレス変換ページ障害、ページ障害と保護エラー、およびフリー・リストに再利用された有効ページなど) を報告します。

-r

未使用のメモリ・ページとディスク・ブロック (ユーザ・プロセスで使用できる平均ページ数、プロセス・スワッピングに対して使用できるディスク・ブロックなど) を報告します。


 

注記 UNIX システムの中には、sar(1) コマンドの代わりに別のコマンドが用意されているものもあります。たとえば、BSD には iostat(1) コマンド、Sun には perfmeter(1) が用意されています。

Windows 2000 プラットフォームにおけるボトルネックの検出

Windows 2000 プラットフォームでは、パフォーマンス・モニタを使用して、システム情報を収集しボトルネックを検出します。パフォーマンス・モニタを開くには、[スタート] メニューから次の項目を選択します。

[スタート] -> [プログラム] -> [管理ツール] -> [パフォーマンス モニタ]

関連項目

 

Back to Top Previous Next
Contact e-docsContact BEAwebmasterprivacy