先週、Maxim DuninはNginx開発者のメーリングリストに、http、fastcgi、およびmemcachedバックエンドサーバーとのキープアライブ接続(アップストリームキープアライブモジュールを使用する場合)の本格的な(チャンク回答を含む)サポートを追加するパッチをテストするように求めるメッセージを
投稿しました 。
誤解を避けるために、NginxはHTTP 1.1プロトコルとキープアライブクライアント接続を強力にサポートしています。 ただし、httpバックエンドとの永続的な接続はサポートされていません。 それには理由がありました。
期待される革新から得られる利点の中で:
- 特に接続を確立するコストが応答速度(高速バックエンドまたはチャネルの高遅延)に見合っている場合、要求ごとのシステムコールが少なくなり、パフォーマンスが向上します。 [1]
- 負荷の高い分散サーバーで短命のポートの制限を使い果たすリスクが少ない。 より迅速にリリースするためにTIME_WAIT間隔を短くする必要はありません。 [2]
- これらのサブシステムの共有リソースがカーネル内に存在するため、ファイルシステムの負荷が高いUnixソケットを使用するFreeBSDユーザーにもメリットがあります。 [3]
Nginxバージョン1.0.5および1.1.0に対して提案されているパッチは実験的なものであり、基本的なテストに合格しています。 著者は
、誰もがより高密度のテストに参加することを
奨励しています。 Igor Sysoevがすでに
報告しているように、将来的には、現在積極的に開発されているブランチのリリース1.1.xのいずれかにコードが追加されることが予想されます。
興味のある方は、リンクをクリックして詳細な手順をご覧ください。
mailman.nginx.org/pipermail/nginx-ru/2011-August/042069.htmlパッチの最新バージョンは、
nginx.org /
patches /
patch-nginx-keepalive-full-2.txtにあります。
psアップストリームディレクティブのキープアライブ番号に夢中にならず、ワークプロセスの数を掛けます。 したがって、worker_processesディレクティブを4に設定し、キープアライブを10に設定すると、最大4 * 10 == 40のキープアライブ接続が得られます。 バックエンドの可能性を過大評価しないでください。