16.4.1 タイムアウトが設定できるポイント
J2EEアプリケーションを実行するシステムでは,次の図に示すポイントにタイムアウトが設定できます。なお,次の図は,クライアントがWebブラウザの場合です。また,Webサーバ連携をする場合とインプロセスHTTPサーバを使用する場合で,ポイントが異なります。
なお,クライアントがEJBクライアントの場合は,WebコンテナをEJBクライアントに置き換えてください。EJBクライアントからデータベースまでの範囲のタイムアウトが設定できます。
また,インプロセスHTTPサーバを使用する場合は,リダイレクタは該当しません。このため,タイムアウトを設定するポイントとして,ポイント2〜5と13は該当しません。インプロセスHTTPサーバを使用する場合にタイムアウトが設定できるポイントについて,次の図に示します。
それぞれのポイントに設定するタイムアウトは,次の表に示すような用途で使い分けられます。
ポイント |
タイムアウトの種類 |
主な用途 |
---|---|---|
1 |
サーバ側で設定するクライアントからのリクエスト受信およびクライアントへのデータ送信のタイムアウト |
|
2 |
リダイレクタ側で設定するWebコンテナへのリクエスト送信処理のうち,コネクション確立のタイムアウト |
通信路の障害またはWebコンテナの障害検知 |
3 |
リダイレクタ側で設定するWebコンテナへのリクエスト送信処理のうち,リクエストヘッダおよびリクエストボディ送信のタイムアウト |
通信路の障害またはWebコンテナの障害検知 |
4 |
リダイレクタ側で設定するWebコンテナからのデータ受信のタイムアウト |
J2EEサーバの業務処理の障害(無限ループ,デッドロックなど),または通信路の障害の検知 |
5 |
Webコンテナ側で設定するリダイレクタからのデータ受信のタイムアウト |
通信路の障害またはWebサーバの障害検知 |
6 |
Webアプリケーションで設定するメソッドの実行時間のタイムアウト |
J2EEサーバの業務処理の障害(無限ループ,デッドロックなど) |
7 |
EJBクライアント側で設定するEnterprise Beanのリモート呼び出し(RMI-IIOP通信)とJNDIネーミングサービス呼び出しのタイムアウト |
J2EEサーバの業務処理の障害(無限ループ,デッドロックなど),または通信路の障害の検知 |
8※ |
EJBクライアント側で設定するCTMからのEnterprise Bean呼び出しのタイムアウト |
J2EEサーバの業務処理の障害(無限ループ,デッドロックなど),または通信路の障害の検知 |
9 |
EJBで設定するメソッドの実行時間のタイムアウト |
J2EEサーバの業務処理の障害(無限ループ,デッドロックなど) |
10 |
EJBコンテナ側で設定するデータベースのトランザクションタイムアウト |
データベースサーバの障害(サーバダウンまたはデッドロックなど)の検知,またはリソースの長時間占有防止 |
11 |
DB Connectorで設定するコネクション取得時のタイムアウト |
コネクション取得時の障害検知(通信路の障害またはリソース枯渇) |
12 |
データベースのタイムアウト |
データベースサーバの障害(サーバダウンまたはデッドロックなど)の検知,またはリソースの長時間占有防止 |
13 |
Webコンテナ側で設定するリダイレクタへのレスポンス送信のタイムアウト |
通信路の障害またはリダイレクタの障害検知 |
これらのタイムアウトの基本的な設定指針は次のとおりです。
-
タイムアウト値の設定は,呼び出し元(WebクライアントまたはEJBクライアント)に近いほど大きな値を設定するのが原則です。このため,次の関係で設定することを推奨します。
-
ポイント1<ポイント5
-
ポイント4>ポイント6>ポイント7
-
ポイント7=ポイント8>ポイント9>ポイント10
-
ポイント10>ポイント11
-
ポイント9>ポイント12
-
ポイント1<ポイント13
-
-
4,7,10,12のポイントのタイムアウト値を設定する場合は,呼び出し処理に通常どの程度の時間が掛かっているかを見極めた上で,呼び出す処理(業務)ごとに算出して設定してください。
なお,1〜13のポイントは,システムでの位置づけによって,次の三つに分けられます。
-
Webフロントシステムで意識する必要があるポイント(1〜6,および13)
詳細は,「16.4.2 Webフロントシステムでのタイムアウトを設定する」を参照してください。
-
バックシステムで意識する必要があるポイント(7〜9)
詳細は,マニュアル「アプリケーションサーバ システム設計ガイド」の「8.6.3 バックシステムでのタイムアウトを設定する」を参照してください。
-
データベース接続時に意識する必要があるポイント(10〜12)
このポイントは,さらにトランザクションでのタイムアウト,DB Connectorでのタイムアウト,およびデータベースでのタイムアウトに分けて意識する必要があります。
詳細は,マニュアル「アプリケーションサーバ システム設計ガイド」の「8.6.4 トランザクションタイムアウトを設定する」,「8.6.6 データベースでのタイムアウトを設定する」を参照してください。
それぞれのポイントでの設定については,「16.4.3 タイムアウトを設定するチューニングパラメタ」,またはマニュアル「アプリケーションサーバ システム設計ガイド」の「8.6.8 タイムアウトを設定するチューニングパラメタ」を参照してください。
- 参考
-
それぞれのポイントのデフォルト値は次のとおりです。
ポイント
デフォルト値
1
300秒
2
30秒
3
100秒
4
3,600秒
5
600秒
6
設定されていません。タイムアウトしません。
7
設定されていません。レスポンスを待ち続けます。
8
ポイント7と同じ値がEnterprise Bean呼び出し時に自動的に引き継がれて設定されます。
9
設定されていません。タイムアウトしません。
10
180秒
11
タイムアウトの設定個所ごとに異なります。
-
物理コネクション確立時のタイムアウト:8秒
-
コネクション枯渇時のコネクション取得要求のタイムアウト:30秒
-
コネクション障害検知時のタイムアウト:5秒
12
データベースの種類とタイムアウトの設定個所ごとに異なります。
- HiRDBの場合
-
ロック解放待ちタイムアウト:180秒
レスポンスタイムアウト:0秒(HiRDBクライアントはHiRDBサーバからの応答があるまで待ち続けます)
リクエスト間隔タイムアウト:600秒
- Oracleの場合(グローバルトランザクションを使用するとき)
-
ロック解放待ちタイムアウト:60秒
- SQL Serverの場合
-
メモリ取得待ちタイムアウト:-1(-1を指定した場合の動作は,SQL Serverのドキュメントを参照してください)
ロック解放待ちタイムアウト:-1(ロックが解放されるまで待ち続けます)
- XDM/RD E2の場合
-
ロック解放待ちタイムアウト:なし(タイムアウト時間を監視しません)
SQL実行CPU時間タイムアウト:10秒
SQL実行経過時間タイムアウト:0秒(タイムアウト時間を監視しません)
トランザクション経過時間タイムアウト:600秒
レスポンスタイムアウト:0秒(HiRDBクライアントはXDM/RD E2サーバからの応答があるまで待ち続けます)
13
600秒
-