我在uwsgi上运行了一个烧瓶应用程序。我使用主管来管理uwsgi过程。我发现日志上写着
your server socket listen backlog is limited to 100 connections.
如何克服100个连接限制? 我的运行脚本如下:
[program:myapp]
command=uwsgi --master -s /tmp/app.sock --module myapp:app --processes 2 -H /srv/sites/mysite chmod-socket 666 --enable-threads
在启动服务器时,只需使用
-l
或--listen
选项(如user4815162342所示)更改(增加)uwsgi的侦听backlog,值大于128将不允许uwsgi运行。由于Unix套接字和TCP连接侦听队列也有系统级限制-默认值为128,因此可以验证它(对于Unix套接字):uwsgi一直是patched,因此如果在启动uwsgi时传递给
--listen
参数的值大于系统级别限制(Linux内核限制),则会导致uwsgi硬故障。如果要将uwsgi的侦听队列限制设置为大于系统级限制(即128),则必须首先增加内核的限制。可以执行以下命令:或者
或者,将
net.core.somaxconn=4096
添加到/etc/sysctl.conf
中,使其成为永久的(在重新启动后仍然存在)。正如前面的回答所述:
示例。如果您使用的是docker和docker compose。
在
docker-compose.yml
中,在描述如何运行uWSGI的块中:在
uwsgi.ini
中:此外,如果不使用
uwsgi.ini
设置文件,则可以在docker compose命令(-l
或--listen
标志)中直接更改此参数:注意,100个连接的“侦听积压”并不意味着您的服务器只能处理100个同时(或全部)连接,而是取决于配置的进程或线程的数量。listen backlog是一个socket设置,它告诉内核如何限制侦听socket的侦听队列中未完成的(尚未适应的)连接的数量。如果挂起的连接数超过指定的大小,则会自动拒绝新的连接。定期维护连接的正常运行的服务器不需要很大的积压工作。
根据手册,您可以使用
-l
选项更改侦听积压:相关问题 更多 >
编程相关推荐