web-dev-qa-db-ja.com

クライアントからの順次リクエストを処理しているときに、Nginxがアップストリームへの接続を再利用できないのはなぜですか?

http://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive で述べたように

キープアライブディレクティブは、Nginxワーカープロセスが開くことができるアップストリームサーバーへの接続の総数を制限しないことに特に注意してください。接続パラメータは、アップストリームサーバーが新しい着信接続も処理できるように十分に小さい数に設定する必要があります。

新しいクライアントが来た場合、なぜ既存のキープアライブ接続を使用できないのかを理解したいのですが。

Nginxは、新しいクライアントが来るたびにアップストリームとの新しい接続を作成する必要がありますか?

2
Aarti

それが何を意味するのかと思います 利用可能なキープアライブ接続の数よりも多くのリクエストが入ってくると、それでも新しいリクエストが開かれます。

さらに、前の文を引用した文に注意してください http://nginx.org/r/keepalive

接続パラメーターは、各ワーカープロセスのキャッシュに保持されるアップストリームサーバーへのアイドル状態のキープアライブ接続の最大数を設定します。この数を超えると、最も使用頻度の低い接続が閉じられます。

「各ワーカープロセス」の部分に注意してください。特定のサーバーとのキープアライブ接続の数をすでに超えているワーカープロセスに(新しいクライアント要求を含む)接続が着信した場合でも、他のワーカーがいる場合でも、新しい接続が開かれると思います。プロセスには、同じアップストリームサーバーとのキープアライブ接続の一部がまだアイドル状態のままです。

詳細が必要な場合は、掘り下げる価値があります ngx_http_upstream_keepalive_module.c

2
cnst