メインコンテンツへスキップ

サーバーの停止

blocklet server stop コマンドは、実行中の Blocklet Server インスタンスを正常にシャットダウンします。このプロセスには、実行中のすべての blocklet、ルーティングエンジン、コアサーバープロセス、および関連する Docker コンテナの停止が含まれます。

使用方法

基本的な使用法

bash
blocklet server stop [options]

正常なシャットダウンプロセス

デフォルトでは、blocklet server stop を実行すると、すべてのサービスがクリーンに終了し、データの破損を防ぐための順次シャットダウンプロセスが開始されます。サーバーには、このプロセスを完了するために5分間のタイムアウトが設定されています。

以下にそのフローを示す図を示します:

Stop Server

正常なシャットダウンの主要なステップは以下の通りです:

  1. 開発用 Blocklet の確認

    サーバーはまず、開発モードで実行されている blocklet があるかどうかを確認します。もしあれば、停止コマンドは失敗し、まず手動で開発プロセスを停止する必要があります。

  2. クライアントへの通知

    NODE_STOPPED イベントがブロードキャストされ、接続されているウェブダッシュボードのユーザーに間近に迫ったシャットダウンを通知します。

  3. ルーティングエンジンの停止

    サーバーのルーティングエンジンが停止されます。

  4. Blocklet の停止

    実行中の各 blocklet は個別に停止されます。

  5. コアプロセスの停止

    PM2 によって管理されている主要な Blocklet Server プロセス(daemonserviceevent-hub)が終了します。

  6. Docker コンテナの停止

    Blocklet Server によって管理されているすべての Docker コンテナが停止されます。

  7. ステータスの更新

    サーバーのステータスが STOPPED に更新されます。

オプション

オプション説明
--forceすべての Blocklet Server 関連プロセスを強制的に停止します。このオプションは正常なシャットダウンシーケンスをバイパスし、サーバーが正常に停止しない場合に使用する必要があります。

強制停止

--force フラグを使用すると、20秒のタイムアウトでより積極的なシャットダウンが開始されます。このプロセスは次のようになります:

  • すべてのルーター設定とキャッシュを即座にクリアします。
  • Blocklet Server とすべての blocklet に関連するすべての PM2 プロセスを直接強制終了します。
  • メインの PM2 デーモン自体を強制終了します。
  • 管理されているすべての Docker コンテナを停止します。

これは、サーバーが応答しなくなり、正常な停止コマンドがタイムアウトした場合に推奨される解決策です。

標準的な正常停止

サーバーの標準的で正常なシャットダウンを実行するには:

基本的な停止コマンド

bash
blocklet server stop

各コンポーネントの正常なシャットダウンを示す出力が表示されます:

期待される出力

text
Sending shutdown notification to web dashboard users ✔
Routing engine is stopped successfully ✔
Blocklet My-Blocklet is stopped successfully ✔
...
daemon is stopped successfully ✔
service is stopped successfully ✔
event-hub is stopped successfully ✔
Docker containers managed by blocklet server are stopped ✔
Done! ✔

サーバーの強制停止

サーバーが応答しない場合や正常な停止に失敗した場合は、--force フラグを使用します。

強制停止コマンド

bash
blocklet server stop --force

このコマンドは、関連するすべてのプロセスを直接停止しようとします。

強制停止の期待される出力

text
nginx router is stopped successfully ✔
All blocklet processes stopped successfully ✔
Docker containers managed by blocklet server are stopped ✔

トラブルシューティング

開発モードの Blocklet

blocklet dev を使用して開発モードで blocklet を実行している場合、blocklet server stop コマンドは次のようなメッセージで失敗します:

開発モードのエラーメッセージ

text
Unable to stop Blocklet Server, please stop the development by pressing Ctrl + C in the terminal of my-dev-blocklet

開発プロセスが実行されているターミナルに移動し、Ctrl + C を押してそれを停止してから、メインサーバーを停止する必要があります。

サーバーが停止しない場合

正常なシャットダウンプロセスに時間がかかりすぎる場合(デフォルトのタイムアウトは5分)、エラーメッセージが表示されます。この場合は、強制停止コマンドを使用する必要があります:

タイムアウトエラーメッセージ

text
Blocklet Server failed to stop within 5 minutes
You can stop blocklet server with blocklet stop --force