Hitachi

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


3.7 タイムアウト制御について

タイムアウト制御とは、処理に掛かる時間のタイムアウトを設定することです。タイムアウトを設定すると、設定時間を超えた処理は中断されるため、システム構築者にとって意図しないリソースの占有を防いだり、業務システムのユーザーに対してシステムの無反応を回避したりできます。

タイムアウト制御の仕組み

リクエスト処理の流れとタイムアウト時間の関係について、次の図に示します。

[図データ]

この図の呼び出し関係はすべて同期のため、実行時間はクライアントに近いほど長くなります。このため、タイムアウト個所を特定しやすいように、呼び出し元のタイムアウトが、呼び出し先のタイムアウトよりも長くなるように設定してください(Web Serverプロキシータイムアウト>Java EEサーバリクエストタイムアウト>トランザクションタイムアウト)。

このようなケースのほか、JAX-RSやJAX-WSを使用して、複数のアプリケーションを連携させる場合も、呼び出し元および呼び出し先で、接続タイムアウトおよびリクエストタイムアウトのタイムアウト時間を設定できます。

Application Serverで設定できる、タイムアウトについて説明します。

サーバ処理のタイムアウト

サーバ処理のタイムアウトの制御内容、設定するパラメーターを次の表に示します。

項番

設定項目名

制御内容

制御対象

設定するパラメーター

1

Web Serverタイムアウト

クライアントとのデータ送受信の待ち時間

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

Timeout

2

Web Serverプロキシータイムアウト

Java EEサーバへリクエストを送信して、レスポンスを受け取るまでの時間

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

ProxyTimeout

3

Java EEサーバリクエストタイムアウト

アプリケーションの実行時間

Java EEサーバ 実行スレッド

configs.config.構成名.network-config.protocols.protocol.構成名.http.request-timeout-seconds

4

トランザクションタイムアウト

トランザクション処理時間

トランザクションサービス

configs.config.構成名.transaction-service.timeout-in-seconds

5

JAX-WSタイムアウト

Webサービス実行時間

JAX-WS、およびWebService

configs.config.構成名.hitachi-jaxws-config.request-timeout

6

JAX-RSタイムアウト

Webサービス実行時間

JAX-RS、およびResource

configs.config.構成名.hitachi-jaxrs-config.read-timeout

7

JDBC SQLタイムアウト

SQLの実行時間

JDBC接続プール

次のどれかの方法で指定します。

  • create-jdbc-connection-poolコマンドの--statementtimeoutオプション

  • glassfish-resources.xml/resources/jdbc-connection-poolstatement-timeout-in-seconds属性

重要
トランザクションタイムアウト発生時の対処

トランザクションタイムアウトが発生したとき、システム運用者は、ログに出力されたメッセージ(KDKD20033-W)を調査し、タイムアウトの原因を排除する必要があります。

なお、メッセージ(KDKD20033-W)は、ローカルトランザクションでタイムアウトが発生した場合だけ出力されます。

接続タイムアウト

接続タイムアウトの制御内容、設定するパラメーターを次の表に示します。

項番

設定項目名

制御内容

制御対象

設定するパラメーター

1

JAX-WS接続タイムアウト

Webサービスに対する接続を確立するまでの時間

JAX-WS、およびWebService

configs.config.構成名.hitachi-jaxws-config.connect-timeout

2

JAX-RS接続タイムアウト

Webサービスに対する接続を確立するまでの時間

JAX-RS、およびResource

configs.config.構成名.hitachi-jaxrs-config.connect-timeout

3

JDBC接続取得タイムアウト

JDBCコネクションプールから、 コネクションを取得する最大の待ち時間

JDBCコネクションプール

次のどれかの方法で指定します。

  • create-jdbc-connection-poolコマンドの--maxwaitオプション

  • glassfish-resources.xml/resources/jdbc-connection-poolmax-wait-time-in-millis属性

Java EEサーバのサブコマンドのタイムアウト

asadminユーティリティーコマンドのサブコマンドの処理は、asadminユーティリティーコマンドのプロセスやドメイン管理サーバのプロセスなどのプロセス間でHTTP通信をすることで実現されます。プロセス間の通信やasadminユーティリティーコマンドのサブコマンド自体の処理などに一定以上の時間を要した場合に、タイムアウトが発生します。asadminユーティリティーコマンドのサブコマンドには、ローカルサブコマンドとリモートサブコマンドがあります。それぞれの場合のタイムアウトについて説明します。

ローカルサブコマンドの場合

ローカルサブコマンドの場合は、asadminユーティリティーコマンドを実行したホスト上でサブコマンドが処理されるため、通信に関するタイムアウトは発生しません。ただし、サブコマンドによっては、コマンド処理タイムアウトを設定できるため、設定した値を超えるとタイムアウトが発生します。

リモートサブコマンドの場合

リモートサブコマンドの場合は、ドメイン管理サーバ上でサブコマンドが処理されるため、通信が発生し、タイムアウトが発生することがあります。 リモートサブコマンドを実行した場合のタイムアウトの発生個所を次の図に示します。

リモートサブコマンドのタイムアウト発生個所(サーバインスタンスの実行なしの場合)

[図データ]

リモートサブコマンドを実行したとき、asadminユーティリティーコマンドのプロセスはサブコマンドの処理をドメイン管理サーバに委譲します。このとき、次の処理に対してタイムアウトが設定されます。

asadminユーティリティーコマンドのプロセスからドメイン管理サーバへの通信に対して設定するHTTPレスポンス読み取り処理

asadminユーティリティーコマンドのプロセスから受け取ったサブコマンドを含むHTTPリクエストの処理

リモートサブコマンドのタイムアウト発生個所(サーバインスタンスの実行ありの場合)

[図データ]

リモートサブコマンドを実行したとき、asadminユーティリティーコマンドのプロセスはサブコマンドの処理をドメイン管理サーバに委譲します。ドメイン管理サーバはasadminユーティリティーコマンドのプロセスから受け取ったサブコマンドを処理した後に、サブコマンドやユーザーが指定したオプションによっては、サーバインスタンス上でも同様のサブコマンドを実行します。このとき、次の処理に対してタイムアウトが設定されます。

asadminユーティリティーコマンドのプロセスからドメイン管理サーバへの通信に対して設定するHTTPレスポンス読み取り処理

asadminユーティリティーコマンドのプロセスから受け取ったサブコマンドを含むHTTPリクエストの処理

ドメイン管理サーバプロセスからサーバインスタンスへの通信に対して設定するHTTPレスポンス読み取り処理

ドメイン管理サーバから受け取ったサブコマンドを含むHTTPリクエストの処理

サブコマンドのタイムアウトの詳細を次の表に示します

表3‒1 サブコマンドのタイムアウト一覧

項番

名称

発生プロセス

対象処理

タイムアウト時の動作

設定方法

1

asadminユーティリティーコマンドリードタイムアウト

asadminユーティリティーコマンドのプロセス

asdminユーティリティーコマンドのプロセスからドメイン管理サーバへの通信に対して設定するHTTPレスポンス読み取り処理

  • asadminユーティリティーコマンドの実行に失敗しますが、サブコマンドの処理はドメイン管理サーバで継続します。ドメイン管理サーバでのサブコマンドの実行結果は、ドメイン管理サーバのホストのメッセージログにメッセージ(成功時:KDKD10162-I、 失敗時:KDKD10163-E)が出力されます。※1

  • asadminユーティリティーコマンドのプロセスの標準出力には、タイムアウトを示すメッセージが出力されます。※2

  • asadminユーティリティーコマンドのメッセージログには、エラーメッセージ(KDKD10164-E)が出力されます。

asadminユーティリティーコマンドの実行ホストの環境変数AS_ADMIN_READTIMEOUTにタイムアウト値を設定します(単位:ミリ秒)。※3

2

ドメイン管理サーバリクエストタイムアウト

ドメイン管理サーバプロセス

asadminユーティリティーコマンドから受け取ったサブコマンドを含むHTTPリクエストの処理

  • asadminユーティリティーコマンドの実行に失敗しますが、サブコマンドの処理自体はエラーにならないで継続する場合があります。※4

  • asadminユーティリティーコマンドのプロセスの標準出力には、サブコマンドの実行エラーを示すメッセージが出力されます。※5

  • ドメイン管理サーバのメッセージログには、エラーメッセージ(KDKD10165-E)が出力されます。

set parameter (configs.config.server-config.network-config.protocols.protocol.リスナー名.http.request-timeout-seconds)で設定します(単位:秒)。

リスナー名:

admin-listenersecure adminが無効な場合)

sec-admin-listenersecure adminが有効な場合)

3

ドメイン管理サーバリードタイムアウト

ドメイン管理サーバプロセス

ドメイン管理サーバプロセスからサーバインスタンスへの通信に対して設定するHTTPレスポンス読み取り処理

  • asadminユーティリティーコマンドの実行に失敗しますが、サーバインスタンス上でのサブコマンドの処理は継続します。サーバインスタンス上でのサブコマンドの実行結果は、サーバインスタンスのメッセージログにメッセージ(成功時:KDKD10162-I、 失敗時:KDKD10163-E)が出力されます。※1

  • asadminユーティリティーコマンドのプロセスの標準出力には、サブコマンドの実行エラーを示すメッセージが出力されます。※5

  • ドメイン管理サーバのメッセージログには、エラーメッセージ(KDKD10164-E)が出力されます。

ドメイン管理サーバのホストの環境変数AS_ADMIN_READTIMEOUTにタイムアウト値を設定します(単位:ミリ秒)。※3

4

サーバインスタンスリクエストタイムアウト

サーバインスタンスプロセス

ドメイン管理サーバから受け取ったサブコマンドを含むHTTPリクエストの処理

  • asadminユーティリティーコマンドの実行に失敗しますが、コマンド処理自体はエラーにならないで継続する場合があります。※4

  • asadminユーティリティーコマンドのプロセスの標準出力には、コマンドの実行エラーを示すメッセージが出力されます。※5

  • ドメイン管理サーバのメッセージログには、エラーメッセージ(KDKD10165-E)が出力されます。

set parameter (configs.config.Java EEサーバのコンフィグ名.network-config.protocols.protocol.sec-admin-listener.http.request-timeout-seconds)で設定します(単位:秒)。

注※1

実行結果ログを出力するサブコマンドと出力しないサブコマンドがあります。実行結果ログの出力の有無については、処理に時間が掛かるサブコマンドの表を参照してください。

注※2

次のメッセージが出力されます。

No response from Domain Admin Server after タイムアウト値 seconds.
The command is either taking too long to complete or the server has failed.
Please see the server log files for command status.
Command コマンド名 failed.
注※3

asadminユーティリティーコマンドリードタイムアウト、ドメイン管理サーバリードタイムアウトの設定値は各サブコマンドで共通の値になります。デフォルトのタイムアウト時間でタイムアウトが発生する場合は、最も処理に時間が掛かるコマンドの時間に合わせて、それらのタイムアウト時間を設定する必要があります。

注※4

タイムアウト時に処理を継続するサブコマンドについては、処理に時間が掛かるサブコマンドの表を参照してください。

注※5

次のメッセージが出力されます。

Command コマンド名 failed.

処理に時間が掛かるサブコマンドを次の表に示します。

表3‒2 処理に時間が掛かるサブコマンド

項番

コマンド名

条件

実行結果ロ

デプロイするアプリケーション数

デプロイするアプリケーションのサイズ

リクエスト終了待ち時間

収集対象のファイルサイズおよびファイル数

1

start-instance

出力する

2

stop-instance

出力する

3

start-cluster

出力する

4

stop-cluster

出力する

5

start-servers

出力しない

6

stop-servers

出力しない

7

deploy

出力する

8

undeploy

出力する

9

enable

出力する

10

disable

出力する

11

collect-snapshot

出力しない

(凡例)

○:条件によってサブコマンドの処理時間が変動します。

−:サブコマンドの処理時間は変動しません。

次のどれかが発生した場合、それらのタイムアウト時間にコマンド処理タイムアウトより十分に大きな時間を設定し、それらのタイムアウトが発生しないようにしてください。

  • asadminユーティリティーコマンドリードタイムアウト

  • ドメイン管理サーバリクエストタイムアウト

  • ドメイン管理サーバリードタイムアウト

  • サーバインスタンスリクエストタイムアウト

タイムアウト値を設定する場合、これらのタイムアウト値には、すべて同じタイムアウト時間を設定してください。

タイムアウト時間は、asadminユーティリティーコマンドのサブコマンドごとではなく、すべてのサブコマンドで同じ値が適用されます。そのため、最も処理時間が掛かるサブコマンドの時間に合わせてタイムアウト時間を設定してください。

メモ

処理に時間が掛かるサブコマンドは、デプロイするアプリケーション数に依存して時間が掛かるなど、条件によってコマンドの処理時間が増加し、タイムアウトになることがあります。