Helix Swarm管理者ガイド (2020.1)

ワーカー

Helix Swarmは、ワーカーと呼ばれるバックグラウンドプロセスを使用して、Helixサーバのイベントに応答します。 ワーカーのデフォルトの数は3であり、各ワーカーが最長10分間、イベントを処理します。 1つのワーカーが終了すると、新しいワーカーが生成されます。

注意

ワーカーが有効になっている場合、各ワーカーはHelixサーバに接続されたままの状態になります。 この動作が、Helixサーバの管理業務に影響する場合があります。

ワーカーのステータス

ワーカーの現在のステータスを確認するには、次のURLにアクセスします: https://myswarm.url/queue/status

応答は、次のようにJSON形式で返されます。

{"tasks":0,"futureTasks":1,"workers":3,"maxWorkers":3,"workerLifetime":"595s"}

通常の方法でSwarmを使用しているときにワーカーが稼働していないことがSwarmで検出されると、システムにログインしているユーザに対して以下のエラーメッセージが表示されます。

ワーカーの構成

ヒント

構成情報を変更しても、構成キャッシュを再ロードしない限り、その構成情報がSwarmで使用されることはありません。構成キャッシュを再ロードすると、変更した構成情報がSwarmで強制的に使用されます。 Swarm構成キャッシュを再ロードするには、admin ユーザまたはsuper ユーザでなくてはなりません。 [ユーザID]ドロップダウンメニューに移動して[システム情報]を選択し、[キャッシュ情報]タブをクリックしてから[構成の再ロード]ボタンをクリックします。

ワーカーの構成を調整するには、構成ブロックをSWARM_ROOT/data/config.phpファイルに追加します。

<?php
// this block should be a peer of 'p4'
'queue' => array(
'workers' => 3, // defaults to 3
'worker_lifetime' => 595, // defaults to 10 minutes (less 5 seconds)
'worker_task_timeout' => 1800, // defaults to 30 minutes
'worker_memory_limit' => '1G', // defaults to 1 gigabyte
),

各項目の意味は以下のとおりです。

  • workers項目では、使用可能なワーカープロセスの数を指定します。 デフォルトは3です。 cronジョブでは、必要なときに新しいワーカープロセスが開始されますが、 ワーカーの数がこの上限値以上になると、新しいワーカープロセスは開始されません。
  • worker_lifetime項目では、ワーカープロセスの実行時間を秒単位で指定します。 デフォルトは595秒(10分間マイナス5秒)です。 ワーカープロセスによるタスクの処理時間がこの値を超えた場合、ワーカープロセスは処理中のタスクを完了してから処理を終了します。 そのため、worker_lifetime項目を指定しても、処理中のタスクが途中で終了することはありません。
  • worker_task_timeout項目では、ワーカープロセスが1つのタスクを処理する際の最長時間を秒単位で指定します。 デフォルトは1800秒(30分間)です。 ワーカーが何らかの状況下で停止した場合でも、この時間の経過後にはワーカーが終了するため、便利です。
  • worker_memory_limit項目では、タスクの処理中にワーカープロセスで使用できるメモリの最大量を指定します。 デフォルト値は1G(1ギガバイト)です。

ワーカーを手動で開始する

新しいワーカープロセスを開始するには、次のURLにアクセスします: https://myswarm.url/queue/worker

実行中のワーカーの数が、設定した上限と一致すると、要求されたワーカープロセスは開始されません。

注意

ワーカーはこのような手法で開始することができますが、設定された存続期間中しか機能しません。 一般的には、1つ以上のワーカーが常に実行されている必要があります。 詳細については、「ワーカーを生成する繰り返しタスクをセットアップする」を参照してください。

ワーカーを手動で再開する

休止中のワーカープロセスを再開するには、そのロックファイルを削除します。

rm data/queue/workers/worker_id

ビジー状態でタスクを処理しているワーカープロセスは、そのタスクが完了するまで機能し続けます。 タスクの完了直後に、ロックファイルが存在しないことを検出すると、ワーカーは終了します。

繰り返しタスクでワーカーを開始する場合は、各繰り返しタスクが必要に応じて新しいワーカーを開始します。 詳細については、「ワーカーを生成する繰り返しタスクをセットアップする」を参照してください。