我运行uwsgi的烧瓶中的应用。 我用的主管来管理uwsgi过程。 我找到日志说,
你的服务器监听套接字积压限制为100个连接。
如何克服100个连接限制? 我执行脚本如下:
[program:myapp]
command=uwsgi --master -s /tmp/app.sock --module myapp:app --processes 2 -H /srv/sites/mysite chmod-socket 666 --enable-threads
我运行uwsgi的烧瓶中的应用。 我用的主管来管理uwsgi过程。 我找到日志说,
你的服务器监听套接字积压限制为100个连接。
如何克服100个连接限制? 我执行脚本如下:
[program:myapp]
command=uwsgi --master -s /tmp/app.sock --module myapp:app --processes 2 -H /srv/sites/mysite chmod-socket 666 --enable-threads
需要注意的是100个连接的“听积压”并不意味着你的服务器只能处理100个并发(或全部)连接 - 这是不是依赖于所配置的进程或线程数。 监听积压是一个插座设置告诉内核如何限制监听套接字的侦听队列优秀(尚未unaccapted)连接的数量。 如果待处理的连接数超过指定大小,新的设置被自动拒绝。 一个发挥作用的服务器定期检修及其连接不应要求大量积压的大小。
根据手册,你可以更改与监听积压-l
选项:
-l|--listen <num>
set socket listen queue to <n> (default 100, maximum is system
dependent)
简单地改变(增加)的uwsgi的使用监听积压-l
或--listen
选项(如指出user4815162342 )启动服务器时,要大于128的值将不允许uwsgi运行。 由于还存在对Unix套接字和TCP连接的系统级限制侦听队列 - 默认值是128,你可以验证它(对于Unix套接字):
cat /proc/sys/net/core/somaxconn
uwsgi已经修补 ,这样,当值传递给--listen
参数,同时启动uwsgi是大于系统级限制(Linux内核的限制),它会导致uwsgi失败硬。 如果你想设置uwsgi的听队列限制比系统等级限制(即128)大 - 必须先增加内核的限制。 可以做执行以下命令:
$ echo 4096 > /proc/sys/net/core/somaxconn
$ cat /proc/sys/net/core/somaxconn
4096
要么
$ sysctl -w net.core.somaxconn=4096
或者,添加net.core.somaxconn=4096
到/etc/sysctl.conf
它成为永久性的(即使重新启动)。
您可以修改SOMAXCONN在你的/ proc / SYS /网/核心/ SOMAXCONN增加此限制。 它只是调整的Linux系统。
因为它是在以前的答案所述:
实例 。 如果您使用的码头工人和码头工人,撰写 。
在docker-compose.yml
,块,你描述如何运行uWSGI:
uwsgi_runner:
<<: *app-base
command: /usr/local/bin/uwsgi --ini /app/uwsgi.ini
# ... other settings ...
sysctls:
net.core.somaxconn: 1024 # set max connections to 1024 in kernel
在uwsgi.ini
:
[uwsgi]
# ... other settings ...
listen = 1024 # set max connections to 1024 in uWSGI
此外,您还可以直接在泊坞窗,撰写命令 (改变这个参数-l
或--listen
标志)如果你不使用uwsgi.ini
设置文件:
uwsgi_runner:
<<: *app-base
command: /usr/local/bin/uwsgi -l 1024 #other-parameters-here