我有3個不同的虛擬IP地址的虛擬機創建eth3:1, eth3:2, eth3:3
,虛擬IP配置不工作,我仍然得到一個地址已在使用錯誤
現在我試圖創造超過65K連接運行於192.168.56.1
的nginx服務器。
如VM資源是有限的,所以我通過
的sysctl net.ipv4.ip_local_port_range = 「32768 33000」
然後我嘗試創建600
線程,即減少端口範圍會向每個虛擬IP地址發送一個請求(GET/HTTP/1.1
)到nginx服務器(running at 192.168.56.1
)200次。
但我的程序失敗somwehere! IO :: Socket告訴我address in use
。
所以我檢查了我的nginx日誌,它只使用了2個不同的ip地址(192.168.56.23 and 192.168.56.24
)來訪問nginx服務器,並且總數只有233(expected 200 x 3 = 600 access logs
)。
任何人都知道發生了什麼問題?
#!/usr/bin/perl
use warnings;
use strict;
use threads;
use IO::Socket::INET;
$| = 1;
sub run
{
my ($ip, $id) = @_;
print ">> Sendto .. $ip ($id)\n";
my $socket = new IO::Socket::INET (
PeerHost => '192.168.56.1',
LocalHost => $ip,
PeerPort => '80',
Proto => 'tcp',
) or die [email protected];
print $socket "GET/HTTP/1.1\r\n\r\n";
sleep (100); # hold connection
$socket->close();
}
my @threads =();
my @ips = qw/192.168.56.23 192.168.56.24 192.168.56.25/;
foreach my $ip (@ips)
{
for (1..200)
{
push @threads, threads->create (\&run, $ip, $_);
}
}
$_->join for @threads;
要打到接近誰,有什麼不好呢?請發表評論 – daisy 2013-03-15 08:20:12