Magento Enterprise Editionを使用した高性能eコマースの方法とベストプラクティス (登録が必要)キープアライブをオフにする必要がある(トラフィックの多いサイトの場合)
mod_qosは、サーバーの空き接続が不足している場合に、キープアライブサポートを無効にすることもできます。
つまり、問題は、低メモリ(360Mb)のサーバーでキープアライブを無効/有効にする必要がありますが、キープアライブをオンにしておくことにはメリットがありますか?
副次的な質問:キープアライブは、nestatによると、多くのTIME_WAIT接続があることと関係がありますか?
TIME_WAIT接続はサーバーリソースを浪費していますか?
キープアライブをオンにしておくことの利点は、クライアントが別のTCP接続を作成することなく、サーバーから複数のエンティティを要求できるようになることです(そのラウンドトリップとの3方向ハンドシェイクこれに伴う問題は、たとえば、Apacheの接続制限が300に設定されている場合、アクティブな接続が300ある場合、他のすべての接続は最初の300クライアントが完了するか、タイムアウトになるまで待機する必要があることです。
キープアライブを無効にすると、クライアントはリクエストごとに1つの接続を作成します。ソケットが両端で適切に閉じられると、気づいたように、TIME_WAITステータスになります。これは、その接続で使用されているポートが、使用可能になる前にしばらく前の接続からデータを受信しないことを保証するために起こります( this を参照してください。ただし、他にもたくさんあります)。私のLinuxシステムでは、/ proc/sys/net/ipv4/tcp_fin_timeoutが60秒に設定されています。あなたはそれを減らすことを試みることができますが、あまり遠くまで行かないでください。どこまで? 1秒あたりの接続数によって異なります。 100-200req/sの場合、デフォルトを変更する必要はありません。
メモリの少ないサーバーでは、あらゆる規模でキープアライブをオンにすると問題が発生します。これは、Apacheが接続ごとに1つのスレッドまたはプロセスを作成し、デフォルトでLinuxに8 MBのスタックを割り当てるためです(これは、Apache構成を介して、アプリケーションに依存する程度まで調整できます)。 360 MBサーバーでは、すべてのクライアントが少なくとも1つ、場合によっては2つの接続を開いたままにしている場合、これが問題になる可能性があります。
これが実際、 nginx や lighttpd のようなイベントベースのWebサーバーが作成された主な理由です。これにより、システムは、メモリ。
だから、私はあなたの状況でケッパリブをオフにして、クライアントへのパフォーマンスの影響に耐えます。あるいは、Apacheの前でnginxのようなものを使用して、ユーザー向けの接続を処理し、Apacheにリクエストをプロキシすることもできます。これは非常に一般的なモデルであり、ディスクやデータベースアクセスなどの操作をブロックする可能性のある「スレッドプール」としてApacheを効果的に扱います。