Package: nginx
Version: 1.4.6-1~bpo70+1
Severity: important
Tags: upstream

Dear Maintainer,

We are using nginx-extras (wheezy, {squeeze,wheezy}-backports) and have noticed
that on reload there are unix socket FD leaks (in our environment we reload
regularly).

By recompiling and pruning out the modules used, I was able to drill the 
problem down the the nginx-http-push module; not a surprise as it is the only 
one that calls socketpair(AF_UNIX).

First thing I did was drop in the latest version (0.712, Debian has 0.692) and 
recompile, unfortunately it did not fix anything.

To reproduce the problem, all you have to do is install
nginx-extras and reload:
----
# lsof -n -p $(pgrep -P1 nginx) | grep socket
nginx   1538 root    3u  unix 0xffff88101ddc5080      0t0 2297044 socket
nginx   1538 root    7u  unix 0xffff88201b7e7440      0t0 2296101 socket
nginx   1538 root    8u  unix 0xffff88201b7e77c0      0t0 2296102 socket
nginx   1538 root    9u  unix 0xffff88201b7e70c0      0t0 2296103 socket
nginx   1538 root   10u  unix 0xffff88201671fc00      0t0 2296104 socket
nginx   1538 root   11u  unix 0xffff88201671f880      0t0 2296105 socket
nginx   1538 root   12u  unix 0xffff88201671f500      0t0 2296106 socket
nginx   1538 root   13u  unix 0xffff88201671f180      0t0 2296107 socket
nginx   1538 root   14u  unix 0xffff8820159c5c40      0t0 2296108 socket
nginx   1538 root   15u  unix 0xffff88101ddc5780      0t0 2297045 socket
nginx   1538 root   16u  unix 0xffff88101d1cc080      0t0 2297046 socket
nginx   1538 root   17u  unix 0xffff88101d1ccb00      0t0 2297047 socket
nginx   1538 root   18u  unix 0xffff88101d1cc400      0t0 2297048 socket
nginx   1538 root   19u  unix 0xffff8810150b40c0      0t0 2297049 socket
nginx   1538 root   20u  unix 0xffff881015fd0c00      0t0 2297050 socket
nginx   1538 root   21u  unix 0xffff881015fd0880      0t0 2297051 socket

# /etc/init.d/nginx reload

# lsof -n -p $(pgrep -P1 nginx) | grep socket
nginx   1538 root    4u  unix 0xffff88101e7fa3c0      0t0 2297070 socket
nginx   1538 root    5u  unix 0xffff88101e7fa040      0t0 2297071 socket
nginx   1538 root    7u  unix 0xffff88201b7e7440      0t0 2296101 socket
nginx   1538 root    8u  unix 0xffff88201b7e77c0      0t0 2296102 socket
nginx   1538 root    9u  unix 0xffff88201b7e70c0      0t0 2296103 socket
nginx   1538 root   10u  unix 0xffff88201671fc00      0t0 2296104 socket
nginx   1538 root   11u  unix 0xffff88201671f880      0t0 2296105 socket
nginx   1538 root   12u  unix 0xffff88201671f500      0t0 2296106 socket
nginx   1538 root   13u  unix 0xffff88201671f180      0t0 2296107 socket
nginx   1538 root   14u  unix 0xffff8820159c5c40      0t0 2296108 socket
nginx   1538 root   24u  unix 0xffff881015fd0500      0t0 2297062 socket
nginx   1538 root   25u  unix 0xffff881015fd0180      0t0 2297063 socket
nginx   1538 root   26u  unix 0xffff88101f849c40      0t0 2297064 socket
nginx   1538 root   27u  unix 0xffff88101f8498c0      0t0 2297065 socket
nginx   1538 root   28u  unix 0xffff88101f849540      0t0 2297066 socket
nginx   1538 root   29u  unix 0xffff88101f8491c0      0t0 2297067 socket
nginx   1538 root   30u  unix 0xffff88101e7faac0      0t0 2297068 socket
nginx   1538 root   31u  unix 0xffff88101e7fa740      0t0 2297069 socket
nginx   1538 root   32u  unix 0xffff88101d3dbb00      0t0 2297072 socket
nginx   1538 root   33u  unix 0xffff88101d3db780      0t0 2297073 socket
nginx   1538 root   34u  unix 0xffff88101d3db400      0t0 2297074 socket
nginx   1538 root   35u  unix 0xffff88101d3db080      0t0 2297075 socket
nginx   1538 root   36u  unix 0xffff8810189efb40      0t0 2297076 socket
nginx   1538 root   37u  unix 0xffff8810189ef7c0      0t0 2297077 socket

# for I in $(seq 1 20); do /etc/init.d/nginx reload; done
# lsof -n -p $(pgrep -P1 nginx) | grep socket | wc -l
104

# for I in $(seq 1 100); do /etc/init.d/nginx reload; done
# lsof -n -p $(pgrep -P1 nginx) | grep socket | wc -l
456
----

You should notice that the number of open unix sockets increases; these unix 
sockets are what the master process uses to speak to its workers.

Marking this important as the last thing you want to do is run out of FD's :)

I tried digging around to fix it myself but came up empty handed, sorry.

Cheers

-- System Information:
Debian Release: 7.4
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.13-0.bpo.1-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to