ワーカー

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

注意

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

ヒント

Swarmのタスクキュー情報を表示するには、adminユーザまたはsuperユーザとしてログインし、[ユーザID]ドロップダウンメニューで[システム情報]を選択してキュー情報タブを開きます。

ワーカーのステータス

ワーカーの現在のステータスを確認するには、以下のいずれかの操作を実行します。

  • adminユーザまたはsuperユーザとしてログインし、[ユーザID]ドロップダウンメニューで[システム情報]を選択してキュー情報タブを開きます。

  • または

  • 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ギガバイト)です。

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

新しいワーカープロセスを開始するには、以下のいずれかの操作を実行します。

  • adminユーザまたはsuperユーザとしてログインし、[ユーザID]ドロップダウンメニューで[システム情報]を選択してキュー情報タブを開き、[ワーカーを開始]をクリックします。

  • または

  • https://myswarm.url/queue/workerにアクセスします。

実行中のワーカーの数が、設定されている上限数に達している場合は、要求したワーカープロセスは起動しません。

注意

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

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

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

rm data/queue/workers/worker_id

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

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