JBoss EAP 6/7 での jboss.as.management.blocking.timeout の設定
Environment
- Red Hat JBoss Enterprise Application Platform (EAP)
- 6.3 以降
- 7
- Red Hat Single Sign-On (RH-SSO) 7.x
Issue
- デプロイメントでは、デプロイメントフォルダーに ".deployment" ファイルではなく ".failed" ファイルが生成されます。
- スレーブサーバーが起動せず、マスターのログにエラーが表示されます。
- サービスコンテナーの安定を待つ間に操作がタイムアウトしました。
-
起動時に java.util.concurrent.TimeoutException エラーが発生します。
-
JBoss EAP 7 の場合 (タイムアウト秒数や操作の詳細は状況により異なります)
ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0348: Timeout after [300] seconds waiting for service container stability. Operation will roll back. Step that first updated the service container was 'add' at address '[ ("core-service" => "management"), ("management-interface" => "http-interface") ]' -
JBoss EAP 6 の場合 (タイムアウト秒数や操作の詳細は状況により異なります)
ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) JBAS013412: Timeout after [300] seconds waiting for service container stability. Operation will roll back. Step that first updated the service container was 'add' at address '[("interface" => "management")]'
-
-
WAR/EAR ファイルをデプロイできません。マスターサーバーはデプロイメントエラーを返します。
"WFLYDC0074: Operation failed or was rolled back on all servers. Server failures:" => {"server-group" => {"main-server-group" => {"host" => {"slave1" => {"mainserver1" => "WFLYCTL0409: Execution of operation 'deploy' on remote process at address '[ (\"host\" => \"slave1\"), (\"server\" => \"mainserver1\") ]' timed out after 305000 ms while awaiting initial response; remote process has been notified to terminate operation"}}}}}}, "rolled-back" => true, "server-groups" => {"cbx-server-group" => {"host" => {"slave1" => {"mainserver1" => {"response" => { "outcome" => "failed", "result" => undefined, "failure-description" => "WFLYCTL0409: Execution of operation 'deploy' on remote process at address '[ (\"host\" => \"slave1\"), (\"server\" => \"mainserver1\") ]' timed out after 305000 ms while awaiting initial response; remote process has been notified to terminate operation", "rolled-back" => true }}}}}} -
Bugzilla の Issue 1117945 は修正されましたか?
Resolution
これは、デプロイメント (または他の管理操作で見られるが、デプロイメント中に最もよく見られる) に、設定されたタイムアウトよりも長い時間がかかる場合に発生します。 デフォルトは 300 秒です。
長いデプロイメント時間が予想外である場合は、「診断手順」セクションを参照してください。
それ以外の場合は、jboss.as.management.blocking.timeout を system property として設定し、サービスコンテナーの安定性を待機するタイムアウト (秒) を調整します。
さまざまな操作モードで JBoss EAP のシステムプロパティーを設定する方法については、ソリューション記事 Add/remove/update system properties in JBoss EAP 6/7 を参照してください。
スタンドアロンモード の場合は、CLI コマンド /system-property=jboss.as.management.blocking.timeout:add(value=N) を使用します。N は設定する値です。例:
[standalone@localhost:9990 /] /system-property=jboss.as.management.blocking.timeout:add(value=600)
{"outcome" => "success"}
これは、設定ファイル standalone.xml に以下のように記載されます。
</extensions>
<system-properties>
<property name="jboss.as.management.blocking.timeout" value="600"/>
</system-properties>
<management>
これは、standalone.conf で設定するか、コマンドラインでシステムプロパティーを使用して JBoss EAP を直接実行することもできます。
./bin/standalone.sh -Djboss.as.management.blocking.timeout=600
deployment-scanner を使用してデプロイする場合は、これ自体にデフォルトで 600 秒の deployment-timeout が設定されている点に注意してください。 したがって、デプロイメントディレクトリーでのアプリケーションのデプロイメントの起動時間が長いため、jboss.as.management.blocking.timeout を 600 より大きくする必要がある場合は、以下のようにデプロイメントタイムアウトも増やします。
<subsystem xmlns="urn:jboss:domain:deployment-scanner:2.0">
<deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="0" deployment-timeout="#ofSeconds"/>
</subsystem>
Openshift では、ユーザーは次のように設定する必要があります。
embed-server --std-out=echo --server-config=standalone-openshift.xml
batch
/system-property=jboss.as.management.blocking.timeout:add(value=900)
run-batch
quit
ドメインモード では、ユーザーはサーバーごとに設定する必要があります。
/host=master/server-config=server-one/system-property=jboss.as.management.blocking.timeout:add(boot-time=true,value=600)
また、ドメインコントローラー (マスターとリモートスレーブコントローラー) にも設定します。
-
コマンドライン
- Red Hat Enterprise Linux:
bin/domain.sh -Djboss.as.management.blocking.timeout=600 - Microsoft Windows:
bin\domain.bat -Djboss.as.management.blocking.timeout=600
- Red Hat Enterprise Linux:
-
サービス起動用の設定ファイル
-
domain.confPROCESS_CONTROLLER_JAVA_OPTS="$PROCESS_CONTROLLER_JAVA_OPTS -Djboss.as.management.blocking.timeout=600" ... HOST_CONTROLLER_JAVA_OPTS="$HOST_CONTROLLER_JAVA_OPTS -Djboss.as.management.blocking.timeout=600" -
domain.batを編集する"%JAVA%" %PROCESS_CONTROLLER_JAVA_OPTS% ^ "-Dorg.jboss.boot.log.file=%JBOSS_LOG_DIR%\process-controller.log" ^ "-Dlogging.configuration=file:%JBOSS_CONFIG_DIR%/logging.properties" ^ -jar "%JBOSS_HOME%\jboss-modules.jar" ^ %MODULE_OPTS% ^ -mp "%JBOSS_MODULEPATH%" ^ org.jboss.as.process-controller ^ -jboss-home "%JBOSS_HOME%" ^ -jvm "%JAVA%" ^ %MODULE_OPTS% ^ -mp "%JBOSS_MODULEPATH%" ^ -- ^ "-Dorg.jboss.boot.log.file=%JBOSS_LOG_DIR%\host-controller.log" ^ "-Dlogging.configuration=file:%JBOSS_CONFIG_DIR%/logging.properties" ^ %HOST_CONTROLLER_JAVA_OPTS% ^ -- ^ -default-jvm "%JAVA%" ^ -Djboss.as.management.blocking.timeout=600 ^ %*
-
注記
- サーバーグループまたは個々のドメインサーバーレベルでプロパティーを設定する唯一のユースケースは、ユーザーがホストコントローラーで設定するタイムアウトよりも 短い タイムアウトを希望する場合です。
- 値の範囲は 1 - 2147483 秒です。値を 0 に設定するとメッセージがログに記録され、300 秒に設定されます。
Root Cause
org.jboss.as.controller.BlockingTimeout クラスは、システムプロパティー jboss.as.management.blocking.timeout の値をロードするか、デフォルトで 300 (秒) に設定されます。
このプロパティーは デプロイメントごとのタイムアウト としてではなく、コンテナーの安定性のタイムアウト として使用され、起動 中に jboss.as.management.blocking.timeout に達すると、すべてのアプリケーションがアンデプロイされ、コンテナーがシャットダウンします。
その理由は、中途半端に動作しているサーバーが存在すると、ユーザーが重大な障害に気づかない可能性があり、潜在的に危険だからです。
Diagnostic Steps
-
サーバーにウイルススキャナーがインストールされ、アクティブ化されているか確認します。
-
アプリケーションに変更を加えた後に問題が発生した場合、以前動作していたときから具体的に何が変更されたかを確認します。 何かがアップグレードされましたか? 追加されましたか? 新しいデータベースまたは別の外部システムをポイントしていますか?
-
起動期間中に一連の スレッドダンプ を収集して、Red Hat が何が問題になっているかを確認できるようにします。JBoss EAP 7.4.8 以降を使用している場合、スレッドダンプは自動的に
server.logに記録されます。この機能拡張は、JBEAP-23951 によって実装されました。 -
ドメインコントローラーとスレーブホストコントローラーの
domain.confにこの設定を追加してください。
ユーザーがスレッドダンプを取得すれば、Red Hat 側でそれらを解析し、デッドロックが発生していないか、あるいはデプロイメントの完了を妨げているようなスレッドが待ち状態になっているリソースがないかなどを特定できます。
This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.
Comments