我有一台服务器,我可以从中访问网页。我想测试几个用户(比如60000个用户)同时访问同一个网页时的服务器反应。 我正在寻找一个脚本来做这个,perl脚本会更好,
以下是我尝试过的代码
#!c:\\perl\\bin
use strict;
use WWW::Mechanize;
my $url = "http://www.cpan.org";
my $searchstring = "WWW::Mechanize";
my $mech = WWW::Mechanize->new();
while (i == 60000)
{
$mech->get($url);
i++;
}
但是这个脚本一次访问url 1,但我需要同时访问。
答案 0 :(得分:6)
您可以使用ab。使用其并发(-c
)和请求数(-n
)选项。
答案 1 :(得分:4)
如上所示,您的代码甚至无法编译。如果您向我们提供您正在使用的确切代码,而不是键入以重新键入并添加拼写错误,那么人们会更容易帮助您。
要让您的代码进行编译,我必须在您的程序中使用$i
之前声明$
并添加i
。我最终得到了这个:
#!/usr/bin/perl
use strict;
use WWW::Mechanize;
my $url = "http://www.cpan.org";
my $searchstring = "WWW::Mechanize";
my $mech = WWW::Mechanize->new();
my $i;
while ($i == 60000) {
$mech->get($url);
$i++;
}
你说循环只执行一次。这不是真的。循环根本没有执行。循环上的条件是$i == 60000
。第一次检查此条件时,$i
未定义,因此条件为false并跳过循环。
我想你可能想要$i <= 60000
。
但正如艾伦指出的那样,使用像ab这样的现有工具会好得多。
答案 2 :(得分:2)
您可以use Perl itself to launch your script 6000 times in parallel或编写一个(或多个).BAT文件或类似的Windows脚本来启动perl脚本。
小心清楚地理解how to execute stuff in detached mode under Windows。
(当然你必须删除原始脚本中的while循环。)
答案 3 :(得分:1)
ab
已被提及,但仅针对网站的根页(/)进行测试。我们发现siege在复制实际负载时更有用,因为我们能够测试从我们的实时访问日志中获取的一长串URL(10,000左右)......