I run a flask app on uwsgi. I use supervisor to manage uwsgi process. I find the log saying that
your server socket listen backlog is limited to 100 connections.
How to overcome 100 connections limitation? My running script is as below:
[program:myapp]
command=uwsgi --master -s /tmp/app.sock --module myapp:app --processes 2 -H /srv/sites/mysite chmod-socket 666 --enable-threads
As it was described in previous answers:
Example. If you are using docker and docker-compose.
In
docker-compose.yml
, in block where you describe how to run uWSGI:In
uwsgi.ini
:Also, you can change this parameter directly in docker-compose command (
-l
or--listen
flag) if you are not usinguwsgi.ini
settings file:Note that a "listen backlog" of 100 connections doesn't mean that your server can only handle 100 simultaneous (or total) connections - this is instead dependent on the number of configured processes or threads. The listen backlog is a socket setting telling the kernel how to limit the number of outstanding (as yet unaccapted) connections in the listen queue of a listening socket. If the number of pending connections exceeds the specified size, new ones are automatically rejected. A functioning server regularly servicing its connections should not require a large backlog size.
According to the manual, you can change the listen backlog with the
-l
option:You can modify SOMAXCONN in your /proc/sys/net/core/somaxconn to increase this limit. It's simply linux tuning systems.
Simply changing (increasing) the uwsgi's listen backlog using the
-l
or--listen
option (as pointed by user4815162342) while starting the server, to a value greater then 128 won't allow uwsgi to run. As there's also a system level limit on Unix socket and TCP connection listen queue - the default is 128, you can verify it (for Unix socket):uwsgi had been patched, such that if the value passed to
--listen
parameter while starting uwsgi is greater then the system level limit (Linux kernel limit) it'll cause uwsgi to fail hard. If you want set uwsgi's listen queue limit greater than the system level limit (i.e. 128) - you must first increase the kernel's limit. Can be done executing the following commands:Or
Or, Add
net.core.somaxconn=4096
to/etc/sysctl.conf
for it to become permanent (survive the reboot).