1

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
XTF
  • 165
  • 1
  • 8

2 Answers2

1

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.

Tollef Fog Heen
  • 692
  • 3
  • 10
0

The Backlog parameter was correct. The problem was, the .socket file was not enabled via systemctl enable x.socket, so systemd was only starting the daemon and the daemon itself was creating the socket, obviously not taking the backlog parameter in the .socket file into account.

XTF
  • 165
  • 1
  • 8