我有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