回答:
すでに2つの良い答えがありますが、おそらく最も重要な現実の問題はまだ言及されていません。
まず最初に、OPはキープアライブとは何かを理解するために、前述の2つの回答とこの小さなブログ投稿を読みたいと思うかもしれません。(作成者は、接続が長くなるほどTCPI / IPが「高速」になることについて詳しく説明していません。実際、長く続く接続はIPウィンドウのスケーリングの恩恵を受けますが、ファイルがなければまたは、帯域幅遅延製品が異常に大きい。)
Apacheを使用する際のHTTPキープアライブに対する大きな議論は、Apacheプロセスをブロックすることです。つまり、キープアライブを使用するクライアントは、クライアントが接続を閉じるかタイムアウトに達するまで、「彼の」Apacheプロセスが他のクライアントにサービスを提供するのを防ぎます。同じ期間で、このApacheインスタンスは他の多くの接続を提供できたはずです。
現在、非常に一般的なApache構成は、Prefork MPMとPHP / Perl / Pythonインタープリター、および前述の言語のアプリケーションコードです。この場合、各Apacheプロセスは、数メガバイトのRAMを占有するという意味で「重い」(Apacheはインタプリタとアプリケーションコードにリンクされています)。これは、各キープアライブされたApacheインスタンスのブロックとともに、非効率的です。
一般的な回避策は、異なる構成で2台のApacheサーバー(必要に応じて、同じ物理サーバーまたは2台のサーバーの両方)を使用することです。
必要に応じて、動的コンテンツと静的コンテンツのこの分離を、たとえば次のように拡張できます。
Apacheのブロックを回避することに関する別のアプローチは、Perlbalなどのよりスマートな接続処理を備えたロードバランサーを使用することです。
..などなど。:-)
キープアライブは、場合によっては良い場合もあれば、非常に悪い場合もあります。新しい接続をセットアップする時間と労力は削減されますが、キープアライブタイムアウトの間はサーバーリソースが占有されます。例:
ご覧のとおり、KeepAliveTimeoutはサーバーのパフォーマンスの最適化にも大きな役割を果たします。
使用パターンを見て、自分で決めてください。
KeepAlive Onを必ず使用する必要があります。
見る:
http://httpd.apache.org/docs/2.0/mod/core.html#keepalive
これにより、単一のTCP接続がブラウザによって再利用され、複数のクエリが送信されます。通常、Webサイトには多くのコンポーネント(HTMLページ、JavaScriptコード、画像)があります。これらのリソースが同じドメインにあるため、同じサーバーでサービスを提供できる限り、KeepAlive接続は、ブラウザが新しいTCP接続を確立する必要がないため、パフォーマンスが大幅に向上します。
ブラウザは通常、ドメインへの約3つの並列接続を開きます。したがって、サイトに18個のオブジェクトがあるとします。ブラウザは3つの接続を開き、KeepAliveモードを使用して、各接続で6つのオブジェクトをダウンロードします。KeepAliveがなければ、18個のTCP接続を開く必要があり、非常に遅いです。
ほとんどの、またはすべての最新のブラウザーはHTTP / 1.1に準拠しているため、これで十分です。
Squidなどの特定のHTTPプロキシはHTTP / 1.1に準拠していませんが、とにかくKeepAlive接続の使用を要求します。