Skip to main content

ワーカ・ジョブについて

ここでは、作業キュー・マネージャの作業単位を実行するプロセスであるワーカ・ジョブの詳細を提供します。%SYSTEM.ProcessOpens in a new tab クラスを使用することで、ワーカ・ジョブを他のプロセスと同じように表示、管理、および監視できます。特定のプロセスがワーカ・ジョブであるかどうかを判断する必要がある場合は、そのプロセス内から $system.WorkMgr.IsWorkerJob() を呼び出します。つまり、%SYSTEM.WorkMgrOpens in a new tab クラスの IsWorkerJob() メソッドを呼び出すことができます。

作業キュー・マネージャは、コントローラ・プロセスを使用してワーカ・ジョブに指示を行います。コントローラ・プロセスは、以下のような複数の操作を実行する専用プロセスです。

  • ワーカ・ジョブの起動

  • ワーカ・ジョブの数の管理

  • 停止したワーカ・ジョブの検出およびレポート

  • ワークロード・メトリックの記録

  • 非アクティブな作業キューの検出

  • 作業キューの削除

ワーカ・ジョブは、以下の状態のいずれかになります。

  • 作業キューへのアタッチの待機中。

  • 作業単位の待機中。ワーカ・ジョブは、ジョブが解放されるまでの短時間のみ、この状態になる可能性があります。

  • アクティブ。ワーカ・ジョブは、作業単位の実行中にプロセスを進めているときにのみアクティブになります。

  • 作業単位の処理中にロックまたはイベントによりブロックされている。ブロックされているワーカ・ジョブはアクティブではありません。ワーカがブロック状態になり、作業キューに追加の作業がある場合、作業キュー・マネージャはリタイア済みのワーカを有効化するか、新しいワーカを起動できます。ワーカ・ジョブのブロックが解除されると、アクティブなワーカの数が、作業キューに対して指定されたアクティブなワーカの最大数を超過する場合があります。これが発生した場合、コントローラ・プロセスは、作業単位を完了させる次のワーカをリタイアさせます。その結果、ワーカ・ジョブのアクティブな数が、特定の作業キューに対して指定されたワーカ・ジョブの最大数を上回る期間が短時間存在する場合があります。

  • リタイア済みで、すぐに有効化することが可能。

未使用のワーカのジョブは、短時間、他の作業キュー・マネージャのキューによって使用できる状態のまま残ります。タイムアウト期間は変更されることがあるため、意図的に文書化されていません。タイムアウト期間の有効期限が過ぎると、ワーカは削除されます。

ワーカ・ジョブが、削除またはクリアされたキューの作業項目をアクティブに処理している場合、システムはごく短時間待機した後、EXTERNAL INTERRUPT エラーを発行します。ワーカ・ジョブがエラーの後も処理を続行すると、システムは DeleteTimeout プロパティで指定された秒数待機してから、ワーカを強制終了し、作業単位を処理するための新しいワーカを起動します。

ワーカ・ジョブを開始するのはスーパーサーバです。つまり、ジョブはスーパーサーバ・プロセスによって使用されるオペレーティング・システム・ユーザの名前で実行されます。このユーザ名は、現在ログインしているオペレーティング・システム・ユーザとは異なる場合があります。

FeedbackOpens in a new tab