使用 uwsgi + nginx 资源暂时不可用

Resource temporarily unavailable using uwsgi + nginx

我已经使用 nignx-uwsgi 托管了 django 应用程序。这是我的 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 [error] 26129#0: *1141328 connect() to unix:///var/uwsgi/uwsgi.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: xxx.xxx.xx, server:

并且站点显示 502 错误网关。我必须重新启动 uwsgi 才能修复它。但是错误的频率越来越高。有没有办法解决这个问题。

服务器负载过重时会出现此错误。首先,我尝试增加 worker_connections 的值,但没有成功。 uWSGI 的队列大小默认为 100,因此当超过 100 个从 Nginx 到 uWSGI 的请求被传递时,队列变满并且 Nginx 向客户端抛出 502,以解决这个增加 uWSGI 队列大小的问题。在 uwsgi.ini 文件中添加 "listen= {required queue size} "。就我而言,我写道,listen=200.

但在做之前,你必须检查 $ cat /proc/sys/net/core/somaxconn 默认情况下,它的值为 128,因此将其值增加: $echo 200 > /proc/sys/net/core/somaxconn
或者 $ sysctl -w net.core.somaxconn=200