I'm trying to track down why a web application is accumulating file descriptors, in the form of connections to clients, even when the clients (browsers) have disconnected.
The server is running Ubuntu 14.04.
The connections in question typically look like this (lsof output):
atc 10763 vcap 724u IPv6 309771865 0t0 TCP 10.32.108.171:8080->10.118.33.246:56379 (ESTABLISHED)
atc 10763 vcap 725u IPv6 309777427 0t0 TCP 10.32.108.171:8080->10.118.33.246:56397 (ESTABLISHED)
atc 10763 vcap 726u IPv6 309777428 0t0 TCP 10.32.108.171:8080->10.118.33.246:56396 (ESTABLISHED)
atc 10763 vcap 727u IPv6 309772456 0t0 TCP 10.32.108.171:8080->10.118.33.246:56380 (ESTABLISHED)
Here are the points which I'm confused about:
- There is no browser on the client system (
10.118.33.246
) which has a connection established to the web server (10.32.108.171
), however the connections remain in theESTABLISHED
state. Seemingly forever or until the web server is restarted. - The server does not have an IPv6 address configured.
- The server doesn't even have IPv6 enabled:
net.ipv6.conf.default.disable_ipv6 = 1
yet lsof is showing the connections as such. - 'Legitimate' connections from a browser are established via IPv4 (at least according to lsof on Mac OS).
- If I launch a browser and establish a connection, I can track the connection on the server and see it go away when I close the browser.
- There is a direct route between client and server. AFAICT there is no nat/masquerading/proxying happening where an intermediate component might be holding a connection open for the client.
Unless I'm wrong on the last point, I do not understand what could be going on. Why do the connections remain ESTABLISHED
even when the client has gone away?
Thanks for any insights.