使用uwsgi + nginx暂时无法使用资源

Nij*_*jo 8 django nginx uwsgi

我使用nignx-uwsgi的django app主机.这是我的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
Run Code Online (Sandbox Code Playgroud)

我在nignx日志中遇到错误

2017/06/16 04:25:42 [错误] 26129#0:*1141328 connect()到unix:///var/uwsgi/uwsgi.sock失败(11:资源暂时不可用)连接到上游,客户端: xxx.xxx.xx,服务器:

并且该站点显示502坏网关.我必须重新启动uwsgi来修复它.但是错误的频率正在增加.有没有什么办法解决这一问题.

Vic*_*pta 11

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

但在执行此操作之前,您必须检查$ cat/proc/sys/net/core/somaxconn,默认值为128,因此通过以下方式增加其值:$ echo 200>/proc/sys/net/core/somaxconn
或$ sysctl -w net.core.somaxconn = 200

  • 很好的答案!文档:https://uwsgi-docs.readthedocs.io/en/latest/articles/TheArtOfGracefulReloading.html#the-listen-queue 请注意,现代 Ubuntu 内核 (20.04) 的默认最大连接数似乎为 4096。 (2认同)