複数クライアントから同一アプリケーション(オブジェクト)に対して要求が出された場合に、すべての要求分のアプリケーションを起動してしまうと、サーバの負荷が大きくなってしまいます。
このような場合に、キュー制御で負荷を平準化させることができます。
クライアントからの要求は、該当するオブジェクトの待ち行列であるキューに接続(キューイング)され、キューイングされた要求は、アプリケーションにより順に処理されます。
以下に、キュー制御の運用イメージを示します。
トランザクションアプリケーションのアプリケーションではワークユニットの機能を利用して以下のキュー制御を行うことができます。
キュー閉塞/閉塞解除
最大キューイング機能
滞留キュー数のアラーム通知機能
優先度制御機能
滞留リクエストのキャンセル機能
また、サーバアプリケーションプロセスが2多重以上で起動されている場合、キューイングされる要求の振り分け方式を以下の2つの方式から選択することができます。
LRU方式
要求待ちのサーバアプリケーションプロセスの中で、最後に要求待ちとなったプロセスに、クライアントからの要求を振り分けます。
クライアントからの要求数が少ない場合は、特定のプロセスのみに要求メッセージが振り分けられます。
ワークユニット定義の“Request Assignment Mode”に“LIFO”を設定してください。
ラウンドロビン方式
要求待ちのサーバアプリケーションプロセスの中で、最初に要求待ちとなったプロセスに、クライアントからの要求メッセージを振り分けます。
クライアントからの要求数が少ない場合は、各プロセスに均等に要求メッセージが振り分けられます。
ただし、その時点で要求受信可能な状態であるプロセスに対してラウンドロビン方式で振り分けを行うため、完全に均等に振り分けられるわけではありません。
ワークユニット定義の“Request Assignment Mode”に“FIFO”を設定してください。
なお、LRU方式とラウンドロビン方式では以下の違いがあります。
LRU方式では、最後に動作したプロセスに対して要求メッセージを割り当て、ラウンドロビン方式では要求待ちのプロセスのなかで最初に動作したプロセスに対して要求を割り当てます。したがって、LRU方式の方が割り当てられたプロセスがメモリ上にロードされている可能性が高く、ラウンドロビン方式では割り当てたプロセスがスワップアウトされている可能性があります。そのためLRU方式の方が、疎通性能がよい場合があります。
要求の振り分け方式は、ワークユニット定義で設定します。
■定義方法
ワークユニット定義の“Request Assignment Mode(要求メッセージ振り分け方式)”に設定します。以下に定義登録の実行例を示します。なお、ワークユニット定義の詳細は“付録A ワークユニット定義”を参照してください。
ワークユニット定義
[Control Option] |
isaddwudefコマンドでワークユニット名を指定して登録します。
isaddwudef -o ISSAMPLE1 |