ページの先頭行へ戻る
Interstage Application Server J2EE ユーザーズガイド(旧版互換)
Interstage

27.3 Servletコンテナのチューニング

Servletコンテナをチューニングする時に考慮するポイントは以下です。

同時処理数

同時処理数およびプロセス多重度を増やすと、Webアプリケーションの同時実行多重度を増やせます。
同時処理数を増やすと、1プロセスあたりの実行多重度を増やせますが、同時処理数が増えることによる負荷や資源の増加により効果はみられない可能性があります。通常はデフォルト値以下で運用することを推奨しています。
アプリケーションから呼び出すEJBの同時処理数や、JDBCのコネクション数にあわせてチューニングしてください。
同時処理数は、Interstage管理コンソールのServletコンテナ設定で指定します。また、isj2eeadminコマンドを使用して設定することもできます。


同時処理数については、以下が設定できます。

処理スレッドの処理完了後、待機中となり使用されていない処理スレッドは、1分間隔の監視によって、待機中の最大値をこえている分が解放されます。
これにより、一時的に負荷が高くなった場合でも、負荷が下がればサーバ資源を解放し節約することができます。


接続数

接続数に関する設定項目としては以下があります。

上記項目の値を増やすとServletコンテナが受付けるクライアントからのリクエストの数を増やせます。
運用時に一時的に負荷が高くなりServletコンテナの同時処理数を超えるリクエストを受付けることが想定される場合は、Servletコンテナの同時処理数を抑えてServletコンテナの接続数(最大接続数)に大きな値を設定することで、サーバ全体のレスポンスの悪化を防ぐことができます。


接続数は、運用するシステムの要求の違いによって以下のように設定します。

注意

  • Servletコンテナへの接続数がServletコンテナの同時処理数の最大値を超えた場合、超えた分の接続はKeepAliveされませんので、Servletコンテナの同時処理数の最大値を超えない場合と比較して多くのSocketを消費します。

  • Servletコンテナの接続数(最大接続数)に設定された値はServletコンテナが使用するSocketのbacklogに設定されます。Socketのbacklogに設定した値はOSによって有効となる範囲が決まっていますので、Servletコンテナの接続数(最大接続数)に設定した値がすべて有効となるわけではありません。
    Socketのbacklogの有効範囲については各OSのドキュメントを参照してください。
    Windows (R)の場合、200より大きな値を設定しても有効になりません。


タイムアウト


タイムアウトの監視項目

タイムアウトに関しては、以下が監視されています。

監視項目

意味

(1)

WebサーバコネクタがServletコンテナとの間でデータパケットを送受信するときに待機する時間

(2)

Servletコンテナに接続されてからリクエストの処理が開始されるまでの待ち時間(値を指定することはできません)

(3)

ServletコンテナがWebサーバコネクタからのデータパケットを受信するときに待機する時間

(4)

ユーザアプリケーションの処理時間

それぞれの項目が監視されるタイミングを下図に示します。


タイムアウトの設定項目

タイムアウトに関する設定項目には以下があります。

設定項目

意味

(a)

Webサーバコネクタの送受信タイムアウト
Interstage管理コンソールの以下の項目で指定します。

  • Webサーバとワークユニットを同一マシンで運用する場合
    [ワークユニット] > [Webサーバコネクタ(コネクタ)設定] > [送受信タイムアウト]

  • Webサーバとワークユニットを同一マシンで運用しない場合
    [Webサーバコネクタ] > [環境設定] > [送受信タイムアウト]

(b)

Servletコンテナのタイムアウト
Interstage管理コンソールの[Servletコンテナ設定] > [タイムアウト]で指定します。

(c)

ワークユニットのアプリケーション最大処理時間
Interstage管理コンソールの[ワークユニット設定] > [アプリケーション最大処理時間]で指定します。

上記は、isj2eeadminコマンドを使用して設定することもできます。

ポイント

  • 以下の現象が頻繁に発生する場合、(a)、(c)の値を大きくすることで回避できる可能性があります。(a)、(c)の値を大きくしても回避できない場合は、サーバの処理能力を超えている可能性があります。サーバの増設または、より性能の良いサーバへのリプレースを検討してください。

    • コンテナログにIJServer32113が出力される

    • WebサーバコネクタのログにIJServer12035、IJServer12044が出力される

  • 以下の現象が頻繁に発生する場合、(b)の値を大きくすることで回避できる可能性があります。回避できない場合はネットワークやクライアントアプリケーションに問題がある可能性があります。発生している問題を解決してください。

    • リクエストデータの読み込みでサーブレットにjava.net.SocketTimeoutExceptionがスローされる

    • WebサーバコネクタのログにIJServer12026、IJServer12027、IJServer12034、IJServer12036が出力される


タイムアウトの設定方法

タイムアウトの設定値は、以下の関係を満たすように値を設定します。

設定項目(a)  >  監視項目(2)  +  監視項目(3)  +  監視項目(4)
設定項目(b)  >  監視項目(3)
設定項目(c)  >  監視項目(4)

注意

  • 以下の条件に該当する場合、IJServerが強制停止されます。

    • 設定項目(b)  >  設定項目(c)に設定した場合、かつ、

    • [ワークユニット設定] > [アプリケーション最大処理時間超過時の制御]を“プロセスを強制停止する”に設定した場合、かつ

    • タイムアウトの監視項目の図における“データの送信2”が設定項目(c)を超えても完了しなかった場合

  • 以下に設定した場合、WebブラウザにはWebサーバコネクタのタイムアウトが通知されます。
        設定項目(a)  < 監視項目(2)  +  監視項目(3)  +  監視項目(4)
    しかし、ServletコンテナはWebサーバコネクタがタイムアウトしたことを検出することはできないため、アプリケーションを継続して実行し、監視項目(3)の時間内に処理が完了した場合は、Servletコンテナ側で異常を検出することができません。

  • 監視項目(4)の時間にはPOSTデータの読み込み時間も含まれます。