Webコンテナの処理の流れ
Webコンテナは以下の流れでクライアントからリクエストを受け付けて処理します。
Webサーバがクライアントからリクエストを受け付け、Webサーバコネクタ経由でWebコンテナへ送信する。
WebコンテナがWebサーバコネクタからリクエストを受け付ける。
受け付けたリクエストを一時的にHTTP接続キューに格納する。
要求処理スレッドは一定間隔でHTTP接続キュー内を監視する。
HTTP接続キューにリクエストがあった場合、要求処理スレッドはリクエストを処理する。
上記はWebコンテナのチューニングポイントとして以下の2つに分類できます。
Webコンテナの処理の流れの5.は同時処理数に関係しています。
5.は「初期スレッド数」、「スレッド数」、「スレッドの増分」で設定することが可能です。
Webコンテナの処理の流れの1.、2.、3.は接続数に関係しています。
1.は「WebサーバコネクタのWebコンテナへの最大接続数」で設定することが可能です。
2.は「最大保留カウント」で設定することが可能です。
3.は「キューサイズ」で設定することが可能です。
以下に、リクエストの流れを基に各設定項目の関係を示します。
同時処理数
同時処理数およびサーバーインスタンスを追加すると、Webアプリケーションの同時実行多重度を増やせます。
同時処理数を増やすと、1プロセスあたりの実行多重度を増やせますが、同時処理数が増えることによる負荷や資源の増加により効果はみられない可能性があります。通常はデフォルト値以下で運用することを推奨しています。
アプリケーションから呼び出すEJBの「7.7.3 Enterprise Beanインスタンスのプーリング」と「7.7.2 Enterprise Beanインスタンスのキャッシング」、JDBCのコネクション数にあわせてチューニングしてください。
同時処理数については、以下が設定できます。
初期スレッド数
スレッド数
スレッドの増分
同時処理数は、Interstage Java EE管理コンソールの[設定] > [クラスタ名-config] または [server-config] > [HTTP サービス] > [要求処理]タブ、およびasadminコマンドを使用して変更できます。詳細については、以下のマニュアルを参照してください。
Interstage Java EE管理コンソールヘルプ
「11.18.3.2 configs.config.http-serviceの定義項目」の
request-processing.thread-count(スレッド数)
request-processing.initial-thread-count(初期スレッド数)
request-processing.thread-increment(スレッドの増分)
接続数
接続数は、運用するシステムの要求の違いによって以下のように設定します。
Webコンテナの負荷が高く処理できないリクエストは、時間がかかってもかまわないので、正常に処理させたい場合
項目 | 設定値 |
---|---|
WebサーバコネクタのWebコンテナへの最大接続数 | なし(無制限) |
Webコンテナの最大保留カウント | リクエストを受け付けることができるだけの十分に大きな値を設定 |
Webコンテナのキューサイズ | 処理待ちのリクエストを保持することができるだけの十分に大きな値を設定 |
Webコンテナの負荷が高く処理できないリクエストは、長時間待たせるのではなく、エラーとしてクライアントに通知したい場合
項目 | 設定値 |
---|---|
WebサーバコネクタのWebコンテナへの最大接続数 | Webコンテナが処理可能な数を設定 |
Webコンテナの最大保留カウント | リクエストを受け付けることができるだけの十分に大きな値を設定 |
Webコンテナのキューサイズ | Webコンテナの最大接続数と同じ値を設定 |
接続数に関する設定項目について、以下に説明します。
WebサーバとWebコンテナを同一マシン内で運用する場合
Interstage Java EE管理コンソールの[クラスタ] または[スタンドアロンインスタンス] > [クラスタ名] または[サーバーインスタンス名] > [Webサーバコネクタ]タブ、およびasadminコマンドを使用して変更できます。詳細については、以下のマニュアルを参照してください。
Interstage Java EE管理コンソールヘルプ
「11.1.9.7 update-web-server-connector-configサブコマンド」の--maxprocessorsオプション
WebサーバとWebコンテナをそれぞれ別のマシンで運用する場合
Webサーバを運用するマシン側で設定します。
Interstage管理コンソールからWebサーバコネクタの最大接続数で設定します。また、isj2eeadminコマンドでも設定できます。詳細については、以下のマニュアルを参照してください。
Interstage管理コンソールのヘルプ
「リファレンスマニュアル(コマンド編)」の「isj2eeadmin」
本項目の値を増やすと、Webコンテナが同時に受け付けることができるリクエスト数を増やせます。運用中に高負荷な状態となった場合に想定される、クライアントからの同時リクエスト数を指定しておくことを推奨します。
最大保留カウントは、Interstage Java EE管理コンソールの[設定] > [クラスタ名-config] または [server-config] > [HTTPサービス] > [接続プール]タブ、およびasadminコマンドを使用して変更できます。詳細については、以下のマニュアルを参照してください。
Interstage Java EE管理コンソールヘルプ
「11.18.3.2 configs.config.http-serviceの定義項目」の
connection-pool.max-pending-count
注意
最大保留カウントに設定された値はWebコンテナが使用するSocketのbacklogに設定されます。Socketのbacklogに設定した値はOSによって有効となる範囲が決まっていますので、最大保留カウントに設定した値がすべて有効となるわけではありません。
Socketのbacklogの有効範囲については各OSのドキュメントを参照してください。
なお、Windows (R)の場合、200より大きな値を設定しても有効になりません。
本項目の値を増やすと、Webコンテナが受け付けたクライアントからのリクエストを、Webコンテナが処理できるようになるまでの間保持する数を増やせます。
運用時に一時的に負荷が高くなり、Webコンテナの同時処理数を超えるリクエストを受け付けることが想定される場合は、Webコンテナの同時処理数を抑えて、Webコンテナのキューサイズに大きな値を設定することで、サーバ全体のレスポンスの悪化を防ぐことができます。
設定ポイント1:
運用時に一時的に負荷が高くなり、クライアントからのリクエスト処理に失敗しかつ、サーバーログにWEB1505が出力されている場合は、キューサイズを大きくしてください。
設定ポイント2:
キューサイズを増やしてリクエストを処理することができるだけの十分に大きなキューを用意した場合、クライアントからのリクエストに対するレスポンスに遅れが生じる可能性があります。Webサーバコネクタの送受信タイムアウト値を増やしてください。
キューサイズは、Interstage Java EE管理コンソールの[設定] > [クラスタ名-config] または [server-config] > [HTTPサービス] > [接続プール]タブ、およびasadminコマンドを使用して変更できます。詳細については、以下のマニュアルを参照してください。
Interstage Java EE管理コンソールヘルプ
「11.18.3.2 configs.config.http-serviceの定義項目」の
connection-pool.queue-size-in-bytes
WebサーバとWebコンテナを同一マシン内で運用する場合
Interstage Java EE管理コンソールの[クラスタ] または[スタンドアロンインスタンス] > [クラスタ名] または[サーバーインスタンス名] > [Webサーバコネクタ]タブ、およびasadminコマンドを使用して変更できます。詳細については、以下のマニュアルを参照してください。
Interstage Java EE管理コンソールヘルプ
「11.1.9.7 update-web-server-connector-configサブコマンド」の--sendreceivetimeoutオプション
WebサーバとWebコンテナをそれぞれ別のマシンで運用する場合
Webサーバを運用するマシン側で設定します。
Interstage管理コンソールからWebサーバコネクタの送受信タイムアウトで設定します。また、isj2eeadminコマンドでも設定できます。詳細については、以下のマニュアルを参照してください。
Interstage管理コンソールのヘルプ
「リファレンスマニュアル(コマンド編)」の「isj2eeadmin」