2.4. JBoss EAP の正常な一時停止およびシャットダウン
JBoss EAP は正常に一時停止およびシャットダウンできます。これにより、新しいリクエストを許可せずにアクティブなリクエストを正常に完了できます。タイムアウト値は、一時停止またはシャットダウン操作がアクティブなリクエストの完了まで待つ期間を指定します。サーバーが一時停止しても管理リクエストは処理されます。
正常なシャットダウンは、リクエストがサーバーに入るエントリーポイントを中心にサーバー全体のレベルで調整されます。以下のサブシステムが正常なシャットダウンをサポートします。
- Undertow
-
undertowサブシステムはすべてのリクエストが終了するまで待機します。 - mod_cluster
-
modclusterサブシステムはPRE_SUSPENDフェーズでサーバーが一時停止することをロードバランサーに通知します。 ejb3-
ejb3サブシステムはすべてのリモート Jakarta Enterprise Beans リクエストおよび MDB メッセージ配信が終了するまで待機します。MDB への配信はPRE_SUSPENDフェーズで停止します。Jakarta Enterprise Beans タイマーは中断され、サーバーが再開したときにタイマーがアクティベートされます。 - トランザクション
サーバーは一時停止すると新しいリクエストを受け付けませんが、インフライトトランザクションおよびリクエストは完了するかタイムアウトが期限切れになるまで継続されます。これは、XTS トランザクションに関連する web サービスリクエストも同様です。
注記デフォルトでは、
ejbサブシステムでのトランザクションの正常シャットダウンは無効になっています。Jakarta Enterprise Beans 関連のトランザクションが完了してからサーバーを一時停止する場合は、トランザクションの正常シャットダウンを有効にする必要があります。以下に例を示します。/subsystem=ejb3:write-attribute(name=enable-graceful-txn-shutdown,value=true)
/subsystem=ejb3:write-attribute(name=enable-graceful-txn-shutdown,value=true)Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Jakarta Concurrency
サーバーはすべてのアクティブなジョブが終了するまで待機します。キューに置かれたジョブはすべてスキップされます。現在、Jakarta Concurrency には永続性がないため、キューに置かれスキップされたジョブは失われます。
サーバーが一時停止状態である間、スケジュールされたタスクはスケジュールどおりの時間に実行されますが、
java.lang.IllegalStateExceptionが発生します。サーバーが再開されると、スケジュールされたタスクは通常どおり実行され、ほとんどの場合でタスクのスケジュールを変更する必要はありません。- Batch
- サーバーはタイムアウト期間内の実行中のジョブをすべて停止し、スケジュール済みのジョブをすべて延期します。
現在、正常シャットダウンは新しいインバウンド Jakarta Messaging メッセージを拒否しません。インフライトアクティビティーによってスケジュールされた Jakarta Batch ジョブおよび Jakarta Concurrency タスクは、現在実行の継続が許可されます。しかし、タイムアウトウインドウを渡す Jakarta Concurrency タスクが提出されると、実行時にエラーが発生します。
リクエストは request-controller サブシステムによって追跡されます。このサブシステムがないと、一時停止および再開機能が制限され、リクエストの完了を待たずにサーバーが一時停止またはシャットダウンします。しかし、この機能が必要ない場合は、request-controller サブシステムを削除してパフォーマンスを若干向上することができます。
2.4.1. サーバーの一時停止 リンクのコピーリンクがクリップボードにコピーされました!
JBoss EAP 7 には、サーバーの操作を正常に一時停止する suspend モードが導入されました。このモードでは、アクティブなリクエストがすべて正常に完了されますが、新しいリクエストは許可されません。サーバーが中断されたら、シャットダウンすることができます。 さらに、元の実行状態に戻ったり、中断状態のままメンテナンスを実行することができます。
管理インターフェイスのサーバーの一時停止よる影響はありません。
管理コンソールまたは管理 CLI を使用するとサーバーを一時停止および再開できます。
サーバーの一時停止状態のチェック
以下の管理 CLI コマンドを使用するとサーバーの中断状態を表示できます。結果の値は、RUNNING、PRE_SUSPEND、SUSPENDING、または SUSPENDED のいずれかになります。
スタンドアロンサーバーの中断状態をチェックします。
:read-attribute(name=suspend-state)
:read-attribute(name=suspend-state)Copy to Clipboard Copied! Toggle word wrap Toggle overflow マネージドドメインのサーバーの中断状態をチェックします。
/host=master/server=server-one:read-attribute(name=suspend-state)
/host=master/server=server-one:read-attribute(name=suspend-state)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
中断
アクティブなリクエストが完了するまでサーバーが待機するタイムアウト値を秒単位で指定し、以下の管理 CLI コマンドを使用してサーバーを中断します。デフォルト値は 0 で、即座に中断します。-1 を値として指定すると、サーバーはアクティブなリクエストがすべて完了するまで無期限に待機します。
以下の各例は、リクエストが完了するまで最大 60 秒待機した後、一時停止します。
スタンドアロンサーバーを一時停止します。
:suspend(suspend-timeout=60)
:suspend(suspend-timeout=60)Copy to Clipboard Copied! Toggle word wrap Toggle overflow マネージドドメインのすべてのサーバーを一時停止します。
:suspend-servers(suspend-timeout=60)
:suspend-servers(suspend-timeout=60)Copy to Clipboard Copied! Toggle word wrap Toggle overflow マネージドドメインの単一のサーバーを一時停止します。
/host=master/server-config=server-one:suspend(suspend-timeout=60)
/host=master/server-config=server-one:suspend(suspend-timeout=60)Copy to Clipboard Copied! Toggle word wrap Toggle overflow サーバーグループのすべてのサーバーを一時停止します。
/server-group=main-server-group:suspend-servers(suspend-timeout=60)
/server-group=main-server-group:suspend-servers(suspend-timeout=60)Copy to Clipboard Copied! Toggle word wrap Toggle overflow ホストレベルですべてのサーバーを一時停止します。
/host=master:suspend-servers(suspend-timeout=60)
/host=master:suspend-servers(suspend-timeout=60)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
再開
resume コマンドは、新しいリクエストを受け入れるために、サーバーを通常の実行状態に戻します。ホスト、サーバー、サーバーグループ、またはドメインレベルでコマンドを起動できます。以下に例を示します。
:resume
:resume
サーバーを一時停止状態で起動
サーバーを一時停止状態で起動し、サーバーが再開するまでリクエストを受け入れないようにすることができます。
スタンドアロンサーバーを一時停止状態で起動するには、JBoss EAP インスタンスの起動時に
--start-mode=suspendランタイム引数を使用します。EAP_HOME/bin/standalone.sh --start-mode=suspend
$ EAP_HOME/bin/standalone.sh --start-mode=suspendCopy to Clipboard Copied! Toggle word wrap Toggle overflow マネージドドメインサーバーを一時停止モードで起動するには、管理 CLI コマンドで
start-mode=suspend引数をstart操作に渡します。/host=HOST_NAME/server-config=SERVER_NAME:start(start-mode=suspend)
/host=HOST_NAME/server-config=SERVER_NAME:start(start-mode=suspend)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記start-mode引数をサーバーのreloadおよびrestart操作に渡すこともできます。マネージドドメインサーバーグループのすべてのサーバーを一時停止モードで起動するには、管理 CLI コマンドで
start-mode=suspend引数をstart-servers操作に渡します。/server-group=SERVER_GROUP_NAME:start-servers(start-mode=suspend)
/server-group=SERVER_GROUP_NAME:start-servers(start-mode=suspend)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記start-mode引数をサーバーグループのreload-serversおよびrestart-servers操作に渡すこともできます。
2.4.2. 管理 CLI を使用したサーバーの正常なシャットダウン リンクのコピーリンクがクリップボードにコピーされました!
サーバーの停止時に適切なタイムアウト値を指定すると、サーバーは正常にシャットダウンされます。コマンドを実行するとサーバーが一時停止され、すべてのリクエストが完了するまで最大で指定のタイムアウトの期間待機し、その後シャットダウンします。
以下の管理 CLI コマンドを使用してサーバーを正常にシャットダウンします。アクティブなリクエストが完了するまでサーバーが待機するタイムアウト値を秒単位で指定します。デフォルト値は 0 で、即座にサーバーをシャットダウンします。-1 を値として指定すると、アクティブなリクエストがすべて完了するまで無期限に待機した後、シャットダウンします。
以下の各例は、リクエストが完了するまで最大 60 秒待機した後、シャットダウンします。
スタンドアロンサーバーを正常にシャットダウンします。
shutdown --suspend-timeout=60
shutdown --suspend-timeout=60Copy to Clipboard Copied! Toggle word wrap Toggle overflow マネージドドメインのすべてのサーバーを停止します。
:stop-servers(suspend-timeout=60)
:stop-servers(suspend-timeout=60)Copy to Clipboard Copied! Toggle word wrap Toggle overflow マネージドドメインの単一のサーバーを停止します。
/host=master/server-config=server-one:stop(suspend-timeout=60)
/host=master/server-config=server-one:stop(suspend-timeout=60)Copy to Clipboard Copied! Toggle word wrap Toggle overflow サーバーグループのすべてのサーバーを正常に停止します。
/server-group=main-server-group:stop-servers(suspend-timeout=60)
/server-group=main-server-group:stop-servers(suspend-timeout=60)Copy to Clipboard Copied! Toggle word wrap Toggle overflow ホストコントローラーと、マネージドのサーバーをすべてシャットダウンします。
/host=master:shutdown(suspend-timeout=60)
/host=master:shutdown(suspend-timeout=60)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記suspend-timeout属性は、ホストコントローラー自体ではなく、ホストコントローラーが管理するサーバーにのみ適用されます。
2.4.3. OS シグナルを使用したサーバーの正常なシャットダウン リンクのコピーリンクがクリップボードにコピーされました!
kill -15 PID などで OS TERM シグナルを送信すると、サーバーを正常にシャットダウンできます。デフォルトでは、この値は管理 CLI の shutdown --suspend-timeout=0 コマンドの値と同じであるため、現在処理中のリクエストを即座に終了できます。タイムアウトは、org.wildfly.sigterm.suspend.timeout システムプロパティーで設定でき、サーバーのシャットダウン前に待機する最大秒数を指定します。-1 を値として指定すると、サーバーは永久に待機します。
マネージドドメインでは、OS シグナルを使用してサーバーをシャットダウンしないでください。サーバーは、管理するホストコントローラーより 管理 CLI を使用してシャットダウン してください。
シグナルの処理を無効にするよう JVM が設定された場合 (-Xrs java 引数が JVM オプションに渡された場合など) や、プロセスが送信されたシグナルに応答できない場合 (KILL シグナルが送信された場合など)、OS シグナルを使用して正常にシャットダウンすることはできません。