メッセージ・フローの作成に関するシステム考慮事項

デフォルトのスタック・サイズ

メッセージ・フロー・スレッドを実行する場合、接続されたノードの論理によって定義される指示を実行するストレージが必要になります。このストレージは、実行グループのヒープおよびスタック・サイズによって決まります。メッセージ・フロー・スレッドに割り振られるデフォルトのスタック・サイズは、使用されるプラットフォームによって異なります。

各メッセージ・フロー・スレッドには、1MB のスタック・スペースが割り振られます。

各メッセージ・フロー・スレッドには、8MB のスタック・スペースが割り振られます。

各メッセージ・フロー・スレッドには、1MB のスタック・スペースが割り振られます。

各メッセージ・フロー・スレッドには、512 KB の下位スタック・スペースおよび 50 KB の上位スタック・スペースが割り振られます。

メッセージ・フローでは、ノードは通常約 2KB のスタック・スペースを使用します。 したがって、標準のメッセージ・フローには、z/OS でおよそ 250 のノード、UNIX プラットフォームでおよそ 500 のノード、Windows でおよそ 500 のノードが含まれます。 この量は、使用されるノードのタイプやノードで実行される処理によって、多くなったり少なくなったりします。

Windows および UNIX プラットフォームでのスタック・サイズの増加

MQSI_THREAD_STACK_SIZE 環境変数を適切な値に設定することによって、スタック・サイズを増やすことができます。システムで実行されているブローカーを再始動するときに、新しい値が使用されます。

設定する MQSI_THREAD_STACK_SIZE の値は、DataFlowEngine プロセス内で作成されるスレッドごとに使用されます。 実行グループに割り当てられる多数のメッセージ・フローがあり、MQSI_THREAD_STACK_SIZE に大きな値を設定すると、DataFlowEngine プロセスはスタック用の大量のストレージを必要とします。

z/OS でのスタック・サイズの増加

z/OS の Integrator コンポーネントは、新しい XPLINKage (追加のパフォーマンス・リンケージ) を使用してコンパイルされ、ランタイム・コードに最適化が追加されます。ただし、初期スタック・サイズが十分に大きくない場合は、スタック・エクステントが使用されます。各エクステントで 128KB が使用されます。下位スタック・サイズを十分に大きくすることは非常に重要です。スタック・エクステントが使用されると、XPLINK のパフォーマンスが低下するためです。

適切なスタック・サイズを判別するために、z/OS のコンポーネント管理者は、LE (言語環境® レポート・ストレージ・ツールを使用できます。これを行うには、_CEE_RUNOPTS 環境変数に RPTSTG オプションを使用して、メッセージ・フローをテストする必要があります。 これは、実動を意図したメッセージ・フローの作成およびテスト中に、コンポーネント・プロファイル (ブローカーの BIPBPROF) 内に設定する必要があります。 例えば、次のようにします。
export _CEE_RUNOPTS=XPLINK¥(ON¥),RPTSTG(ON)
次いで、コンポーネント・プロファイル内で LE_CEE_RUNOPTS 環境変数を変更または追加することで、z/OS 上のスタック・サイズのデフォルト値をオーバーライドすることができます。

コンポーネント・プロファイルの更新時には、コンポーネントを停止して、必要な変更をプロファイルに加え、BIPGEN をサブミットして ENVFILE を再作成し、コンポーネントを再始動します。

例えば、以下の行の 50K および 512K というデフォルト値を、必要に合わせて変更できます。
export _CEE_RUNOPTS=XPLINK(ON),THREADSTACK(ON,50K,15K,ANYWHERE,KEEP,512K,128K)

RPTSTG を増やすと、アプリケーションの実行時間が長くなります。したがって、これは、メッセージ・フローおよび最終的な実稼働環境の開発に限定した補助手段として使用してください。必要となる正確なスタック・サイズを判別できたら、このオプションを _CEE_RUNOPTS 環境変数から除去する必要があります。

注: XPLINK スタックは仮想ストレージで減少しますが、古い標準リンケージは増加します。実行時に下位スタック・スペースと上位スタック・スペースを切り替えることによって生じるパフォーマンスに対する影響を回避するには、XPLINK オプションを使用して (可能な場合)、ユーザー定義拡張機能をコンパイルする必要があります。 メッセージ・フローが、標準リンケージ規則によってコンパイルされたユーザー定義拡張機能を使用する場合は、上位スタック・サイズの適切な値を判別および設定する必要があります。

正確なスタック・サイズの判別

WebSphere Message Broker では、ネストまたは再帰的処理が関係する処理は、スタックが大量に使用される原因となる場合があります。例えば、以下の状況では、スタック・サイズを増やす必要があるかもしれません。
  • メッセージ・フローが、大量の繰り返しまたは複雑なネストを含むメッセージを処理する場合。
  • メッセージ・フローが、同じプロシージャーまたは関数を再帰的に呼び出す ESQL を実行する場合、または ESQL ステートメントで演算子 (連結演算子など) が繰り返し使用される場合。
関連タスク
メッセージ・フロー応答時間の最適化
関連資料
メッセージ・フロー
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
ac00340_