接続の持続やプロセス数を制御し、サーバの処理性能・リソース消費をチューニングするディレクティブ群。
多くは MPM(Multi-Processing Module) に関わる。

KeepAlive・タイムアウト系

1回のTCP接続を使い回して複数リクエストを処理する仕組み(KeepAlive)。接続の確立/切断コストを減らせる。

  • KeepAlive on|off … 持続的接続を使うか否か。
  • MaxKeepAliveRequests … 1接続で受け付ける最大リクエスト数。0で無制限
  • KeepAliveTimeout … 持続的接続で「次のリクエスト」を待つ最大秒数。これを過ぎると接続を切断する。
  • Timeout … リクエスト受信〜レスポンス完了までの処理全体の最大秒数。KeepAliveとは独立(KeepAlive off でも効く)。

関係:KeepAlive on が大前提 → その上で「何回まで(MaxKeepAliveRequests)」「何秒待つか(KeepAliveTimeout)」を決める。

紛らわしい3つの切り分け:処理完了までの上限=Timeout/次リクエストの待ち=KeepAliveTimeout/受付回数の上限=MaxKeepAliveRequests

プロセス/ワーカー管理系

子プロセスをいくつ起動・待機・上限とするかを制御。

  • StartServers … 起動時に立ち上げる子プロセス数。
  • MinSpareServers … 待機(アイドル)子プロセスの最小数。これを下回ると増やす。
  • MaxSpareServers … 待機子プロセスの最大数。これを超えると減らす。
  • MaxRequestWorkers … 同時に処理できるリクエストの最大数(=子プロセスの最大数)。同時接続数の上限を決める重要パラメータ。
  • MaxConnectionsPerChild … 1つの子プロセスが処理するリクエスト数の上限。これに達すると子プロセスを破棄・再生成する(メモリリーク対策)。0で無制限

名称変更(旧名 → 新名)

バージョンアップで名前が変わったものはひっかけで狙われる。

旧名新名変更時期
MaxClientsMaxRequestWorkersVer 2.3.13
MaxRequestsPerChildMaxConnectionsPerChildVer 2.3.9

覚え方:「Clients(クライアント)→ Workers(ワーカー)」「Requests → Connections」。新しい方が処理の実体(ワーカー/コネクション)に即した名前になっている。

旧名は後方互換のエイリアスとして残存(非推奨)。設問がバージョンを明示しない場合は現行名(新名)が正解