$uname -a
Linux debian-11-34 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt9-3~deb8u1 (2015-04-24) x86_64 GNU/Linux
经过测试Debina 8.0 已经解决了Aceept thundering herd
https://gist.github.com/kazuho/10436253
# 1) run this script with either "accept" or "select-accept" as the argument # (the script listens to 127.0.0.1:12345) # 2) telnet localhost 12345 # 3) if you see "accept failed", there is the thundering herd problem # # use strict; use warnings; use IO::Socket::INET; my $mode = $ARGV[0] || ''; if ($mode !~ /^(accept|select-accept)$/) { die "Usage: $0 <accept|select-accept>\n"; } my $listener = IO::Socket::INET->new( Listen => 5, LocalPort => 12345, LocalAddr => '127.0.0.1', Proto => 'tcp', ReuseAddr => 1, ) or die "failed to listen to port 127.0.0.1:12345:$!"; if ($mode eq 'select-accept') { $listener->blocking(0) or die "failed to set listening socket to non-blocking mode:$!"; } my $pid = fork; die "fork failed:$!" unless defined $pid; while (1) { if ($mode eq 'select-accept') { while (1) { my $rfds = ''; vec($rfds, fileno($listener), 1) = 1; if (select($rfds, undef, undef, undef) >= 1) { last; } } } my $conn = $listener->accept; if ($conn) { warn "connected!"; $conn->close; } else { warn "accept failed:$!"; } }