web-dev-qa-db-ja.com

Webサーバー側からのキープアライブの長所と短所

HTTPプロトコルのKeep-Alive接続機能は、WebサーバーへのTCP接続ヒットを減らすことを目的としています。Webサーバーのパフォーマンスを向上させることができるはずです。しかし、一部のWebサーバーはKeepAlive機能を意図的に無効にしていることがわかりました。サーバー側から。

私の理解では、一部のリバースプロキシ、つまりHAProxyは、状況によってはCPU使用率よりも重要なメモリ使用量を減らすために、HTTPキープアライブを無効にします。

Webサーバーがキープアライブを無効にする他の理由はありますか?

3
Morgan Cheng

キープアライブは、おしゃべりで遅延の影響を大きく受けるtcp-setupの数を減らすことを目的としています。主な目標は、クライアントのパフォーマンスを向上させることです。最新のサーバーの場合と同様に、tcp接続のセットアップに低コストがかかります。

一部のプロキシ/ロードバランサーは、実際のサーバーを想定し、待ち時間が無視できるLAN上にあり、したがってtcpセットアップのペナルティが無視できるため、Webサーバーへのキープアライブを無効にします。また、(LBの観点から)着信接続と発信接続の間に必ずしも1対1の関係があるとは限らないため、バランシングソフトウェアの複雑さが軽減されます。

サーバーがキープアライブを無効にする理由はいくつかあるので、おそらく管理者のせいであると思われます。 1つの例外は、接続ごとの子サーバー(Apache)です。このサーバーでは、ブラウザーの全体的なエクスペリエンス(および帯域幅の使用量)が低下した場合でも、その子/スレッドをできるだけ早く解放すると利点があります。

Afaikキープアライブはオプション機能であり、実装にサービスは必要ありません。

3
Joris