4.17.3 ワーカスレッド
サーバスレッドがリクエストを受け付けたあと,そのリクエストがHTTP/2プロトコルである場合は,ワーカスレッドと呼ばれるスレッドでHTTP/2プロトコルのストリームに相当するリクエスト処理をします。
HTTP/2通信を使用する場合,HTTP/2リクエストを処理したサーバスレッド,ワーカスレッド,およびストリームを把握するために,アクセスログにHTTP/2に関連する情報を出力することを推奨します。その設定例を次に示します。
-
UNIX版
LogFormat "%h %l %u %t \"%r\" %>s %b %T %P %{tid}P \"%{hws_ap_root}n\" H2_STREAM_TAG=%{H2_STREAM_TAG}e HWS_H2_WORKER_THREAD_ID=%{HWS_H2_WORKER_THREAD_ID}n" hws_std
-
Windows版
LogFormat "%h %l %u %t \"%r\" %>s %b %T %{hws_thread_id}P \"%{hws_ap_root}n\" H2_STREAM_TAG=%{H2_STREAM_TAG}e HWS_H2_WORKER_THREAD_ID=%{HWS_H2_WORKER_THREAD_ID}n" hws_std
ワーカスレッドは,サーバプロセス内に存在し,コンフィグファイルの設定に従って増減します。ワーカスレッドは,サーバプロセスが生成される際にH2MinWorkersディレクティブで指定した数だけ生成されます。このとき生成されたワーカスレッドはサーバプロセス終了時まで生存します。運用時にワーカスレッドが不足した場合は,H2MaxWorkersディレクティブで指定した数を上限としてワーカスレッドが生成されます。リクエスト処理が完了したあと,H2MaxWorkerIdleSecondsディレクティブで指定した時間が経過するとワーカスレッドは終了しますが,サーバプロセス生成時に生成されたワーカスレッドは終了しません。
ワーカスレッドはサーバプロセスごとに生成されるため,最小数はH2MinWorkersディレクティブ指定値×サーバプロセス数,最大数はH2MaxWorkersディレクティブ指定値×サーバプロセス数となります。