ubuntu – How to Set Unix Socket Backlog with Systemd

nginxsystemdUbuntu

I've got a problem with nginx and a fastcgi backend. I've tried to increase the backlog size but it doesn't appear to be working. What am I doing wrong?
The backend is started via systemd.

OS: 16.04.2 LTS (Xenial Xerus)

# /etc/systemd/system/backend.socket 
[Socket]
Backlog=1000
ListenStream=/tmp/backend.socket

# ss -l|grep back
u_str  LISTEN     0      128    /tmp/backend.socket 21641                 * 0             

# nginx log
2017/06/21 09:40:56 [error] 1565#1565: *33729 connect() to unix:/tmp/backend.socket failed (11: Resource temporarily unavailable) while connecting to upstream, upstream: "fastcgi://unix:/tmp/backend.socket:"

$ cat /proc/sys/net/core/somaxconn
1024

Best Answer

From listen(2):

If the backlog argument is greater than the value in /proc/sys/net/core/somaxconn, then it is silently truncated to that value; the default value in this file is 128. In kernels before 2.4.25, this limit was a hard coded value, SOMAXCONN, with the value 128.

So, you need to bump the value in /proc/sys/net/core/somaxconn to your desired backlog length.