ワーカー
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
ビジー状態でタスクを処理しているワーカープロセスは、そのタスクが完了するまで機能し続けます。タスクの完了直後に、ロックファイルが存在しないことを検出すると、ワーカーは終了します。
繰り返しタスクでワーカーを開始する場合は、各繰り返しタスクが必要に応じて新しいワーカーを開始します。詳細については、「ワーカーを生成する繰り返しタスクをセットアップする」を参照してください。