in reply to Socket hang. (Windows or Perl? Solutions?) (Updated)

>perl -v This is perl 5, version 12, subversion 3 (v5.12.3) built for MSWin32-x +86-multi-thread ... Binary build 1204 [294330] provided by ActiveState http://www.ActiveSt +ate.com ... >perl a.pl -port=12347 server:41930 client:41930 cycles: 597.742/secTerminating on signal SIG +INT(2)

This is where it first froze. I immediately ran the following:

>netstat /a Active Connections Proto Local Address Foreign Address State ... TCP 127.0.0.1:12347 tribble:49157 TIME_WAIT TCP 127.0.0.1:12347 tribble:49159 TIME_WAIT TCP 127.0.0.1:12347 tribble:49161 TIME_WAIT TCP 127.0.0.1:12347 tribble:49162 TIME_WAIT TCP 127.0.0.1:12347 tribble:49163 TIME_WAIT TCP 127.0.0.1:12347 tribble:49164 TIME_WAIT TCP 127.0.0.1:12347 tribble:49165 TIME_WAIT TCP 127.0.0.1:12347 tribble:49166 TIME_WAIT TCP 127.0.0.1:12347 tribble:49167 TIME_WAIT TCP 127.0.0.1:12347 tribble:49168 TIME_WAIT TCP 127.0.0.1:12347 tribble:49169 TIME_WAIT TCP 127.0.0.1:12347 tribble:49170 TIME_WAIT TCP 127.0.0.1:12347 tribble:49171 TIME_WAIT TCP 127.0.0.1:12347 tribble:49172 TIME_WAIT TCP 127.0.0.1:12347 tribble:49173 TIME_WAIT TCP 127.0.0.1:12347 tribble:49174 TIME_WAIT ...

I presume there are 41930 of those in total.

This would account for the pause. My question isn't why I get these in Windows. My question is why didn't linux show a similar pause. I'll see what netstat shows in linux tomorrow.

Replies are listed 'Best First'.
Re^2: Socket hang. (Windows or Perl? Solutions?) (Updated)
by spx2 (Deacon) on Apr 06, 2011 at 08:52 UTC

    In Linux, in order to avoid running out of sockets you can use the following as root:

    echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle 

    I'm not sure how your Linux install is set, just wanted to mention that I once wrote a bot to monitor svn commits and it had this problem and netstat would uncover many

    TIME_WAIT
    still opened but unused connections.

    Here are some docs that describe what tcp_tw_recycle does(Taken from ip-sysctl.txt):

    tcp_tw_recycle - BOOLEAN
    	Enable fast recycling TIME-WAIT sockets. Default value is 0.
    	It should not be changed without advice/request of technical
    	experts.
    
    

      In Linux, in order to avoid running out of sockets you can use the following as root:

      Backwards. I'm not running out of sockets in Debian, even though I'm creating sockets 3x faster than one Windows.

      /proc/sys/net/ipv4/tcp_tw_recycle contains a zero. netstat -a shows a bajillion sockets in TIME_WAIT.

      Why is it not running out of sockets?