プロセスホスト

process.host は、ワークスティーリングスケジューラー上で Lua および WebAssembly プロセスを実行します。このページは設定およびライフサイクルのリファレンスです。YAML ブロックはエントリの断片です。

各ホストはプロセスを独立してスケジュールします。ホスト間で負荷が自動的に分散されることはありません。

エントリ種別

種別 説明
process.host スケジューラー付きのプロセス実行ホスト

設定

- name: main_host
  kind: process.host
  host:
    workers: 8
    queue_size: 1024
    local_queue_size: 256
  lifecycle:
    auto_start: true
フィールド デフォルト 説明
workers int NumCPU ワーカー goroutine
queue_size int 1024 グローバルキューの初期容量
local_queue_size int 256 ワーカーごとのローカル deque の初期容量

どちらのキューも、初期容量を使い切ると拡張されます。デフォルトを適用した後の値は正でなければなりません。グローバルキューの有効な初期容量は 16 以上に制限され、各ローカル deque の容量は 2 の累乗に切り上げられます。

ライフサイクル

プロセスホストは、スーパーバイザーによって管理されるサービスです。lifecycle.auto_start のデフォルトは false です。起動していないホストはプロセスの生成を拒否します。requiresstartupstart_timeoutstop_timeoutstable_thresholdrestartsecurity など、標準のライフサイクルフィールドも適用されます。

ホストの停止は、そのホストインスタンスにとって終了を意味します。スケジューラーは各プロセスにキャンセルイベントを送信し、停止コンテキストの期限までプロセスの終了を待ってから、残っているプロセスをキャンセルして閉じます。

ライブ更新では host.workers のサイズを変更できます。キューサイズまたはライフサイクル設定の変更は拒否され、ホストを置き換える必要があります。CPU アフィニティがワーカーセットを管理している場合、ワーカー数もライブでは変更できません。

スケジューラー

スケジューラーはワークスティーリングを使用します。各ワーカーはローカル deque を持ち、アイドル状態のワーカーはグローバルキューまたは他のワーカーから処理を取得します。これにより、負荷が自動的に分散されます。

  • ワーカーはプロセスを並行して実行します。
  • グローバルキューは、すべてのワーカーがビジーなときに保留中のプロセスを保持します。
  • ローカルキューは、処理をワーカーの近くに保持して競合を減らします。

プロセス種別

プロセスホストは、次の種別のエントリを実行します。

種別 説明
process.lua ソースベースの Lua プロセス
process.lua.bc プリコンパイル済みの Lua バイトコード
process.wasm WebAssembly プロセス(実験的)

プロセスはそれぞれ独自のフレームコンテキストを持ち、独立して実行され、メッセージを通じて通信します。プロセスエントリに設定したセキュリティは、実行前にそのプロセスフレームへ適用されます。モニター、リンク、アプリケーションスーパーバイザーは障害に対応できますが、プロセスホストが失敗したすべてのプロセスを自動的に再起動するわけではありません。

関連項目