Python 您的服务器套接字侦听积压限制为100个连接
我在uwsgi上运行了一个烧瓶应用程序。我使用主管管理uwsgi流程。我发现日志上写着 您的服务器套接字侦听积压限制为100个连接 如何克服100个连接限制? 我的运行脚本如下:Python 您的服务器套接字侦听积压限制为100个连接,python,flask,wsgi,uwsgi,supervisord,Python,Flask,Wsgi,Uwsgi,Supervisord,我在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个连接的“侦听积
[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个(或总共)连接,而是取决于配置的进程或线程的数量。listen backlog是一个套接字设置,告诉内核如何限制侦听套接字的侦听队列中未完成(尚未接受)的连接数。如果挂起的连接数超过指定的大小,则会自动拒绝新连接。定期维护其连接的正常运行的服务器不需要很大的积压工作
根据手册,您可以使用-l
选项更改listen backlog:
-l|--listen <num>
set socket listen queue to <n> (default 100, maximum is system
dependent)
-l |——听
将套接字侦听队列设置为(默认值为100,最大值为系统
从属)
您可以在/proc/sys/net/core/SOMAXCONN
中修改SOMAXCONN以增加此限制
这只是linux调优系统。在启动服务器时,只需使用
-l
或--listen
选项(如所指)将uwsgi的侦听积压工作增加到大于128的值,可能会阻止uwsgi启动。Unix套接字和TCP连接侦听队列(默认值为128)上还有一个系统级限制,需要增加
您可以验证以下设置:
cat /proc/sys/net/core/somaxconn
如果启动uwsgi时传递给--listen
参数的值大于系统级限制,则会导致uwsgi严重失败。如果要将uwsgi的侦听队列限制设置为大于系统级限制,则必须首先增加内核限制。这可以通过执行以下命令来完成:
$ echo 4096 > /proc/sys/net/core/somaxconn
或
或者,将
net.core.somaxconn=4096
添加到/etc/sysctl.conf
中,使其在重新启动时保持不变。如前面的回答中所述:
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
设置文件,则可以在docker compose命令中直接更改此参数(-l
或-listen
标志):
uwsgi_runner:
<<: *app-base
command: /usr/local/bin/uwsgi -l 1024 #other-parameters-here
uwsgi\u跑步者:
你确定这就是你需要做的吗?如果您累积了100个连接的积压,那么您必须使用至少99%的容量,然后在传入连接的数量超过您可能提供的服务之前,增加限制只会给您一个极小的喘息空间。找出如何更快地为请求提供服务将更有效率。要获得一个完美的答案,请在编写时描述如何增加内核中的连接。如果您的环境在docker中工作,则设置net.core.somaxconn:1024
是增加内核中的连接的一个步骤。您好Denis,请编辑您的答案,不要在评论表中回答,谢谢:)
[uwsgi]
# ... other settings ...
listen = 1024 # set max connections to 1024 in uWSGI
uwsgi_runner:
<<: *app-base
command: /usr/local/bin/uwsgi -l 1024 #other-parameters-here