Liberty のための最適化されたローカル・アダプターのパフォーマンスに関する考慮事項
WebSphere® Optimized Local Adapters (WOLA) API は、外部アドレス・スペースと z/OS® 用の Liberty 上のアプリケーション間の呼び出しで最適なパフォーマンスが得られるように設計されています。API は、これらの環境にあるアプリケーション間の詳細な対話をサポートすることで、新しい種類のアプリケーション・パターンを確立します。 システムにとって最良の構成オプションを選択することで、最適化されたローカル・アダプターを使用することによるパフォーマンスの利点を最大化することができます。
登録 API 呼び出しでの最小接続数および最大接続数の値の選択
登録 API 呼び出しに対して大きすぎる最小接続数の値を選択すると、パフォーマンスが低下することがあります。確立された各接続は、登録抹消 API が呼び出されるまで残るため、最小接続数の値が大きすぎると、メモリーの消費量が増加し、登録 API および登録抹消 API の各呼び出しの完了に必要な時間が増大します。お客様のニーズに合わせて、最も小さい最小接続数の値を選択してください。例えば、何百もの同時スレッドが 1 つの登録を共有する可能性が見込まれる場合は、大きな最小接続数値を指定して、登録に割り当てるメモリーと時間を増やすのは妥当です。予想される同時スレッド数が少ない場合は、設定する最小接続数の値を小さくします。
最大接続数に小さすぎる値を選択した場合も、クライアントが接続の要求時に接続を待機しなければならなくなると、パフォーマンスが低下することがあります。最大接続数の値を超過すると、呼び出しスレッドは、接続取得、起動、任意要求受信、またはホスト・サービス の各 API の待機時間パラメーターで指定された秒数、接続が使用可能になるのを待機します。この時間が期限切れになると、待機時間が満了するまでに要求の接続ハンドルを獲得できなかったことを示す戻りコードおよび理由コードが戻されます。ご使用の環境の予想ニーズに最適な、最大接続数の値を選択してください。
CICS リンク・サーバーの始動時における最大接続数の値の選択
最小接続数 (MNC) パラメーターおよび最大接続数 (MXC) パラメーターを指定せずに顧客情報管理システム (CICS®) でリンク・サーバー・タスクを開始すると、MNC はデフォルトの 1 になり、MXC はデフォルトの 10 になります。MXC パラメーターの値は、リンク・サーバー・タスク (BBO$) によって開始して同時に実行できるリンク呼び出しタスク (BBO#) の数を指定します。そのため、この値は、CICS ターゲット・プログラムを実行および開始できる、Liberty サーバー上の同時スレッドの数も制限します。
リンク・サーバーのこのインスタンスの下で開始される標準的なターゲット CICS プログラムの予想所要時間を反映する MXC 値を選択します。例えば、ターゲットの CICS プログラムのほとんどが長時間実行される場合、Liberty サーバーから CICS に要求が効率的に流れ続けるように、MXC 値を大きくするのが妥当です。ターゲット・プログラムの存続時間が短い場合は、MXC を小さくした方が効率的です。
共有 64 ビット・メモリー
最適化されたローカル・アダプター機能が Liberty サーバーで使用可能になっている場合、サーバーは、z/OS 内の 2 GB 境界より上にある 32 MB の共有メモリーを取得します。このメモリーは、同じ wolaGroup 名を持つすべての Liberty サーバーによって共有され、共有される最適化されたローカル・アダプター制御構造を保管します。
2 GB 境界より上にある追加共有メモリーが、クライアントと Liberty サーバー間で渡されるメッセージを保管するために割り振られます。メッセージを渡すために必要なストレージ量は、渡されるメッセージの平均サイズによって異なります。また、任意の時点で存在するすべてのメッセージ・データを保持するのに十分な共有メモリーがなければなりません。必要に応じて、追加のメモリーが割り振られます。
アプリケーションが登録 API を呼び出し続け、登録抹消 API を呼び出さず、また登録を自動的にクリーンアップする終了を実行せずにループし続けると、WOLA グループの最適化されたローカル・アダプターの共有メモリー・バッファーがオーバーフローすることがあります。この状態が発生すると、API 呼び出しはメモリー不足の理由コードとともに戻されます。
アプリケーションで必要な WOLA 共有メモリー量の概算推定値を計算できます。クライアント登録ごとに 384 バイトの共有メモリーが消費されるのに加えて、接続ごとに 192 バイトの共有メモリーが消費されます。 最大接続数 100 の登録では、約 20 KB の共有メモリーが消費されます。 すべての接続が使用中の場合に接続が使用可能になるまで待機する必要があるクライアント・スレッドごとに、追加で 80 バイトが消費されます。 登録がホストするサービスごとに、追加で 384 バイト消費されます。
200 個の登録 x 384 バイト = 76,800 バイト 200 個の登録 x 200 個の接続 x 192 バイト = 7,680,000 バイト 200 個の登録 x 1000 の待機 x 80 バイト = 16,000,000 バイト ----------------------------------------------------------------- 23,756,800 バイト 33,554,432 バイト – 23,756,800 バイト = 9,797,632 バイト残存 / 384 バイト/サービス ----------------------------------------------------------------- 25,514 サービス
最適化されたローカル・アダプターの CICS リンク・サーバーのパフォーマンスに関する考慮事項
Liberty サーバーで実行中のアプリケーションから既存の CICS アプリケーション・プログラムを呼び出すための簡単な方法として、CICS リンク・サーバー用の最適化されたローカル・アダプターを使用することができます。リンク・サーバーを始動すると、最適化されたローカル・アダプターのリンク・サーバー・タスク (BBO$) が開始され、Liberty サーバーからのプログラム・リンク要求を受信します。リンク要求を受信すると、リンク・サーバー・タスク (BBO$) は、プログラム・リンク・タスク (BBO#) を開始します。プログラム・リンク・タスクは、ターゲット・プログラムに EXEC CICS LINK コマンドを発行して応答を受信し、その応答を Liberty サーバーの呼び出し元に送信します。これらのアクションを実行するために、BBOC START_SRVR コマンドで SEC=Y パラメーターを設定することで、Liberty サーバー上のアプリケーションのスレッド・レベルの ID をターゲット CICS タスクに伝搬して表明します。
REU=Y を指定してリンク・サーバーを実行した場合、プログラム・リンク・タスク (BBO#) は、登録に対して BBOC STOP_SRVR コマンドまたは BBOC UNREGISTER コマンドが入力されるまでアクティブなままになります。 大きい最大接続数 (MXC) の値も指定して実行していて、多数の要求が同時に到着する場合、アクティブなプログラム・リンク・タスク (BBO#) の数が、CICS 最大同時タスクしきい値に達することがあります。CICS 最大同時タスクしきい値の設定について詳しくは、ご使用のバージョンの CICS の資料を参照してください。
Liberty サーバーから CICS の下のアプリケーションへの呼び出しを行う場合にパフォーマンスを最大化するには、アプリケーションプログラム内に直接、ホスト・サービス、任意要求受信、または特定要求受信の各 API をコーディングします。ただし、API を直接コーディングした場合、リンク・サーバーが提供する ID 伝搬の組み込みサポートが提供されません。
JCA リソース・アダプターを使用するための考慮事項
最適化されたローカル・アダプターの JCA リソース・アダプターを使用した場合、ConnectionFactory オブジェクトから取得される接続ごとに、追加のメモリー・オーバーヘッドが必要になります。アプリケーションが同じアプリケーション・メソッドで外部アドレス・スペースまたは CICS に対して複数の呼び出しを行う場合、各対話で同じ接続を使用し、アプリケーション・メソッド内で同じ JCA 対話オブジェクトを使用することで、パフォーマンスを向上させることができます。
最適化されたローカル・アダプター用の JCA ConnectionFactory オブジェクトを作成する際に、その ConnectionFactory 用の JCA 接続プールの最小サイズおよび最大サイズを変更できます。 接続プールは、対話時に登録 API を呼び出す際に指定した物理接続にバインドされた論理接続を表します。 パフォーマンスを最適化するには、JCA 接続プールのサイズを、登録 API 呼び出し時に設定した物理接続プールと同じサイズに設定します。JCA 接続プールが小さすぎる場合、アプリケーションは、使用可能な物理接続があっても、JCA 接続オブジェクトを待機しなければならない場合があります。