質問: なぜmaxkeepaliverequestsを無制限以外に設定するのですか? apacheの keepalivetimeout は、一定の時間内に新しいリクエストが発行されない場合にキープアライブ接続を閉じるために存在します。ユーザーがブラウザ/タブを閉じない場合、このタイムアウト(通常は5〜15秒)が最終的にほとんどのキープアライブ接続を閉じ、接続を無期限に保持することでサーバーリソースの浪費を防ぎます。 maxkeepaliverequests ディレクティブは、単一のtcp接続のために開くhttpリクエストの数に制限を課します(- keepalive )が配信されます。これを0に設定すると、無制限の数のリクエストが許可されます。なぜこれを「無制限」以外に設定するのでしょうか?クライアントがまだアクティブにリクエストを行っている場合、それらを発生させるにはどのような害がありますか?同じキープアライブ接続?制限に達した後も、新しい接続でのみリクエストが送信されます。私の見方では、これを制限しても意味がありません。何が欠けていますか?
回答: 部分的には、1人のユーザーがすべての接続スロットを占有しないようにするためです。制限がなければ、悪意のあるクライアントまたは不適切に作成されたクライアントが、利用可能なすべての接続を乗っ取り、永久にそれらを保持する可能性があります。ただし、これは、ipごとの接続制限のようなものと比較して、そのための大きな緩和策ではありません。主にロードバランシングですが、特にメンテナンスに関してです。サーバーをオフラインにしたい場合は、サーバーを0接続にドロップしますが、既存の接続を一定時間終了させます。キープアライブ要求の数に制限を設けることは、最終的にユーザーが新しい接続を適切に作成し、新しいバックエンドサーバーに移動することを意味します。おそらく、ドレインプロセス中にキープアライブの受け入れを完全に停止する必要があることをサーバーに通知する何らかの方法がさらに良いでしょうが、私が知る限り、そのような機能は存在しません。