使用 uwsgi + nginx 资源暂时不可用
Posted
技术标签:
【中文标题】使用 uwsgi + nginx 资源暂时不可用【英文标题】:Resource temporarily unavailable using uwsgi + nginx 【发布时间】:2017-11-18 18:52:55 【问题描述】:我有使用 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 在连接到上游时失败(11:资源暂时不可用) ,客户端:xxx.xxx.xx,服务器:
网站显示 502 bad gateway。我必须重新启动 uwsgi 才能修复它。但是错误的频率正在增加。有没有办法解决这个问题。
【问题讨论】:
【参考方案1】:当服务器负载过重时会出现此错误。首先,我尝试增加 worker_connections 的值,但没有奏效。 uWSGI 的队列大小默认为 100,因此当 nginx 向 uWSGI 传递超过 100 个请求时,队列已满,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
【讨论】:
很好的答案!文档:uwsgi-docs.readthedocs.io/en/latest/articles/… 请注意,现代 Ubuntu 内核 (20.04) 的默认最大连接数似乎为 4096。以上是关于使用 uwsgi + nginx 资源暂时不可用的主要内容,如果未能解决你的问题,请参考以下文章