使用 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 资源暂时不可用的主要内容,如果未能解决你的问题,请参考以下文章

503服务暂时不可用jenkins x中的nginx / 1.13.9

ubuntu安装时出现11:资源暂时不可用

接受错误:资源暂时不可用

Nginx+uWSGI启动Django

资源暂时不可用

python-serial OSError: [Errno 11] 资源暂时不可用