Hitachi

 Hitachi Application Server V10 ユーザーズガイドWindows®用)


3.6 流量制御について

流量制御とは、リクエスト処理が集中した状態でもシステムを安定して稼働させるために、システムで処理するリクエストの数を制御することです。Java EEサーバで一度に実行されるリクエスト処理数の最大値を制御したり、EJBプールにプールするBean数やJDBCコネクションプールにプールするJDBCコネクション数を制御したりすることで、Java EEサーバの負荷を一定に抑え、安定したスループットを実現できます。

流量制御の仕組み

リクエスト処理の流れと流量制御の対象について次の図に示します。

[図データ]

制御対象リソースと設定するパラメーターについて次の表に示します。図中の項番と表の項番が対応しています。

項番

制御対象リソース

制御内容

設定するパラメーター

1

Web Serverサーバプロセス/サーバスレッド

Web Serverのサーバプロセス/サーバスレッドは、主にJava EEサーバにリクエストを転送する役割を持つプロセス/スレッドです。このプロセス/スレッドはJava EEサーバでのリクエスト処理が完了するまで占有されます。

最大プロセス/スレッド数を変更して、最大同時接続数を制御します。1つのリクエストに対して、プロセス/スレッドが1つ割り当てられます。また、処理しきれないリクエストを格納するキューのサイズも変更できます。

  • キューのサイズ: ListenBackLogHWSMaxQueueSize

  • 最大同時接続数:ThreadsPerChild

2

Java EEサーバ実行スレッドプール

Java EEサーバ実行スレッドは、リクエストの解釈、Webアプリケーションの実行、およびレスポンスの構築をするスレッドです。

最大スレッド数を変更して、最大同時実行リクエスト数を制御します。1つのリクエストに対して、スレッドが1つ割り当てられます。また、処理しきれないリクエストを格納するキューのサイズも変更できます。

  • 最大実行スレッド数:configs.config.Java EEサーバの構成名.thread-pools.thread-pool.スレッドプールID.max-thread-pool-size

  • 実行待ちキューサイズ:configs.config.Java EEサーバの構成名.thread-pools.thread-pool.スレッドプールID.max-queue-size

3

EJBプール

プールする最大のBean数を変更して、同時に実行するスレッド数を制御します。1つのリクエストに対して、Session Beanが1つ割り当てられます。

なお、利用しているBean数が最大の場合に新たなBeanが必要になったとき、クライアントはBeanが利用できるようになるまで待つ必要があるため、リクエストが滞留します。

最大プールサイズ:configs.config.Java EEサーバの構成名.ejb-container.max-pool-size

4

JDBCコネクションプール

プールする最大のJDBCコネクション数を制御します。

なお、利用しているコネクション数が最大の場合に新たなコネクションが必要になったとき、クライアントはコネクションが利用できるようになるまで待つ必要があるため、リクエストが滞留します。

最大プールサイズ:resources.jdbc-connection-pool.コネクションプールID.max-pool-size