web-dev-qa-db-ja.com

uwsgi + nginxを使用して一時的にリソースを利用できません

私はDjango nignx-uwsgiを使用するアプリホストです。これが私のuwsgi構成です:

[uwsgi]
 master          = true 
 socket          = /var/uwsgi/uwsgi.sock
 chmod-socket    = 666
 chdir           = /home/ubuntu/test
 wsgi-file       = /home/ubuntu/test/test/wsgi.py
 virtualenv      = /home/ubuntu/virtual
 vacuum          = true
 enable-threads  = true
 daemonize= /home/ubuntu/uwsgi.log

Nignxログでエラーが発生します

2017/06/16 04:25:42 [エラー] 26129#0:* 1141328アップストリーム、クライアントへの接続中にunix:///var/uwsgi/uwsgi.sockへのconnect()が失敗しました(11:リソースが一時的に利用できません): xxx.xxx.xx、サーバー:

そしてサイトは502の悪いゲートウェイを示しています。修正するには、uwsgiを再起動する必要があります。しかし、エラーの頻度は増加しています。とにかくこれを修正することはありますか?.

9
Nijo

このエラーは、サーバーに大きな負荷がかかっている場合に発生します。最初にworker_connectionsの値を増やしてみましたが、機能しませんでした。 uWSGIのキューサイズはデフォルトで100であるため、NginxからuWSGIへの100を超えるリクエストが渡されると、キューがいっぱいになり、Nginxがクライアントに502をスローします。これを解決するために、uWSGIのキューサイズが増加します。 uwsgi.iniファイルに「listen = {必要なキューサイズ}」を追加します。私の場合、listen = 200と書きました。

ただし、その前に、$ cat/proc/sys/net/core/somaxconnをチェックする必要があります。デフォルトの値は128なので、値を次のように増やします。$ echo 200>/proc/sys/net/core/somaxconn
または$ sysctl -w net.core.somaxconn = 200

11
Vicky Gupta