High # of sockets in TIME-WAIT state, server unresponsive at load
Solution 1:
In the end, I did more research and read this very excellent guide on scaling Node apps behind an nginx proxy.
The major difference came when I added the keepalive
parameter to the upstream
block in nginx. As it turns out, nginx workers don't cache incoming connections and re-use them, causing many thousands of new connections to be created (esp. w/ socket.io handshakes and such)
@MichaelHampton's suggestion of using a unix domain socket would also resolve this quite well.