プロセスホスト
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 です。起動していないホストはプロセスの生成を拒否します。requires、startup、start_timeout、stop_timeout、stable_threshold、restart、security など、標準のライフサイクルフィールドも適用されます。
ホストの停止は、そのホストインスタンスにとって終了を意味します。スケジューラーは各プロセスにキャンセルイベントを送信し、停止コンテキストの期限までプロセスの終了を待ってから、残っているプロセスをキャンセルして閉じます。
ライブ更新では host.workers のサイズを変更できます。キューサイズまたはライフサイクル設定の変更は拒否され、ホストを置き換える必要があります。CPU アフィニティがワーカーセットを管理している場合、ワーカー数もライブでは変更できません。
スケジューラー
スケジューラーはワークスティーリングを使用します。各ワーカーはローカル deque を持ち、アイドル状態のワーカーはグローバルキューまたは他のワーカーから処理を取得します。これにより、負荷が自動的に分散されます。
- ワーカーはプロセスを並行して実行します。
- グローバルキューは、すべてのワーカーがビジーなときに保留中のプロセスを保持します。
- ローカルキューは、処理をワーカーの近くに保持して競合を減らします。
プロセス種別
プロセスホストは、次の種別のエントリを実行します。
| 種別 | 説明 |
|---|---|
process.lua |
ソースベースの Lua プロセス |
process.lua.bc |
プリコンパイル済みの Lua バイトコード |
process.wasm |
WebAssembly プロセス(実験的) |
プロセスはそれぞれ独自のフレームコンテキストを持ち、独立して実行され、メッセージを通じて通信します。プロセスエントリに設定したセキュリティは、実行前にそのプロセスフレームへ適用されます。モニター、リンク、アプリケーションスーパーバイザーは障害に対応できますが、プロセスホストが失敗したすべてのプロセスを自動的に再起動するわけではありません。