我们很有兴趣为我们新生的Web应用程序运行一个简单而基本的加载测试,不太复杂 - 站点中的登录或导航不是必需的 - 只需通过许多并发请求到预定义的URL列表来轰炸我们的Web。
我正在寻找apache ab和siege,它看起来真的很棒 - 只需几分钟即可完成设置,我收到了很多请求到我的网站,这些平台的问题是当我为某个页面定义“GET”请求时,它只是点击此页面并且从不请求它的内部资源(图像,css和js),当然我可以将这些资源添加到url列表但它不会给我一个真实的结果(#rpm和all)。
任何建议我该怎么办?
我可以用apache ab或siege做我想做的事吗?
你知道一个让我这样做的类似工具吗?我看着JMeter看起来有点矫枉过正。
THX。
答案 0 :(得分:0)
我建议您尝试一种工具,允许您在浏览器中记录会话。这些工具通常会捕获每个页面上的所有资源,并将它们包含在测试中。搜索“负载测试软件”将揭示许多选项。我将为我们产品的免费版本(Load Tester LITE)添加一个插件,该插件适用于您所描述的场景,并允许您使用无限数量的用户进行测试。
答案 1 :(得分:0)
首先,答案是:围攻常见问题解答为您提供two options;两者都很简单。
在你的评论中,你写道“Siege分别处理每个URL” - 这不仅仅是Siege,这就是浏览器的工作方式。它首先下载一个HTML文件,在该HTML文件中,它将看到指向其他资产(图像,javascript文件等)的链接,并将下载这些文件。通过使用sproxy,您可以重新创建浏览器正在执行的操作,并将其保存为Siege的说明。
其次,建议 - 使用Bad Boy和JMeter;这样,您可以在您的网站上点击,捕获下载,然后使用JMeter重新播放。
第三,需要注意的是 - 通过下载所有图像,链接等,您可以有效地测试网络服务器(Apache,IIS,无论如何)的性能,而不是Web应用程序的性能。即使是最强硬的愤世嫉俗者也可能会接受你的网络服务器的性能已经被其他人建立,并且几乎肯定不会成为问题。你真的想测试一下吗?
答案 2 :(得分:0)
使用httperf结束 虽然它有很多错误可以破坏大量分段错误的过程,但是它具有很好的功能,可以让你使用会话(--wsesslog)。
另一种选择是使用围攻模拟一个客户端并并行运行几个客户端:
假设您有一个url.txt,其中包含您要测试的所有url,以及一个resources.txt文件,其中包含每个文件导入的通用资源(images,css和js),因此您可以使用此脚本来模拟数字并行客户:
#run X users in parallel:
i=1;
for line in $(head -|NUMBER OF CLIENTS| urls.txt); do
echo $line > client$i;
cat resources.txt >> client$i;
let "i += 1";
done;
for f in $(ls client*); do
siege -c |NUMBER OF CALLS| -r 100 -f $f -b &
done;