web-dev-qa-db-ja.com

NGINXが書き込み状態で接続を蓄積するのは正常ですか?

これは、nginxのstab_statusからの接続数を示すグラフです。グラフの低下は、手動で行われたサーバーの再起動です。

NGINX status - by year

この動作は奇妙で、漏れのように見えます。閉じるべき接続がぶら下がっていると思いますが、書き込み状態のままです。

これは正常ですか?私は行動を起こすべきですか?もしそうなら、どの方向に?

Nginxのキープアライブを変更してみたところ、次のようなカーネル設定がいくつかありました https://Gist.github.com/perusio/2154235

しかし、この動作は変わっていません。

サーバーは、1つのプロセッサと1024MBのRAMを備えたVPSです。

EDIT1:バージョン

nginxバージョン:gcc4.8.2によってビルドされたnginx/1.6.2(Ubuntu 4.8.2-19ubuntu1)TLS SNIサポートが有効な構成引数:-add-module =/root/ngx_pagespeed-release-1.9.32.3-beta --prefix =/etc/nginx --conf-path =/etc/nginx/nginx.conf --error-log-path =/var/log/nginx/error.log --http-client-body-temp-path =/var/lib/nginx/body --http-fastcgi-temp-path =/var/lib/nginx/fastcgi --http-log-path =/var/log/nginx/access.log --http-proxy-temp -path =/var/lib/nginx/proxy --http-scgi-temp-path =/var/lib/nginx/scgi --http-uwsgi-temp-path =/var/lib/nginx/uwsgi --lock -path = /var/lock/nginx.lock --pid-path =/var/run/nginx.pid --with-pcre-jit --with-http_ssl_module --without-mail_pop3_module --without-mail_smtp_module --without -mail_imap_module --without-http_scgi_module --with-ipv6 --with-http_stub_status_module --sbin-path =/usr/sbin/nginx --with-http_spdy_module

Ngx_pagespeedを実行することに注意してください

EDIT2:詳細情報

Nginxは、uwsgi/Djangoアプリのリバースプロキシとして機能しています。 uwsgiを監視し、結果を投稿して、uwsgiに何か関係があるかどうかを確認します。

2
jperelli

一部のサーバーがSPDYまたはHTTP/2を使用している場合、問題の原因は、このプロトコルの統合の欠陥にあります。 nginxチケット#714 をご覧ください。

現在のステータスは次のとおりです。

Nginx 1.11.3で修正されたように、HTTP/2に少なくとも1つの接続リークがあり、修正は1.10.xではまだ利用できません。代わりに1.11.xをお試しください。

2

stub_statusモジュールのドキュメント で説明されているように、書き込み状態の接続は次のことを意味します。

Writing

Nginxがクライアントに応答を書き戻している現在の接続数。

したがって、サーバーの応答時間を調査し、クライアントがnginxの応答を取得して、後で接続を閉じるのに非常に長い時間がかかる理由を確認する必要があります:遅いネットワーク、大量のデータ、チャンク転送エンコーディング、WebSocket ...

1
Xavier Lucas

サーバーの接続を「送信」状態のままにしておく信頼性の低い接続を持つクライアントが常に存在するため、これは正常な動作のようです。彼らはそれ以上データを読み取っていませんが、Nginxは send_timeout 接続を閉じる前。

これらは、悪意のあるクライアントがサーバーの利用可能な接続とファイル記述子を使い果たすために故意にそれを行う攻撃である可能性もあるため、これが実際の問題になる場合は、上記の値を低くしてみてください。

1
user186340