基准测试 – 这得到测量正确,JMeter或Apache ab?

我开始在JMeter写一些基本测试,并惊讶的是,测量与那些不同于Apache ab。

我有一个千兆LAN连接运行Nginx的Intel i7服务器和运行JMeter或ab的i5测试机。最初,我只是测试开箱即用的Nginx主页响应率。

ab -c 1 -n 100 http://testserver.local/

给出

Document Path:          /
Document Length:        151 bytes

Concurrency Level:      1
Time taken for tests:   0.078 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      38400 bytes
HTML transferred:       15100 bytes
Requests per second:    1280.77 [#/sec] (mean)
Time per request:       0.781 [ms] (mean)
Time per request:       0.781 [ms] (mean, across all concurrent requests)
Transfer rate:          480.29 [Kbytes/sec] received

这个结果是可重复的,几个百分点。

在JMeter中,我有一个1用户100循环线程组,包含:

> HTTP头管理器设置Accept-Encoding:gzip
> HTTP Get / sampler
>摘要报告监听器

只有100个样品,这会导致每次我运行它的结果不一致的结果。但最令人吃惊的事实是,吞吐量报告低至每秒40个请求(而不是1280)。最高记录速率为1030,这只有在我增加到10,000个样品时才实现。

我是否认为JMeter是简单负载测试的错误工具,因为它的开销太高,不能准确测量?

Jmeter告诉你每个请求实际占用了多长时间。 AB只是做一些非常基本的数学来获得总体平均。所以,你的问题的直接答案是,jmeter得到正确和ab只是一个粗略的猜测,给你的一切的平均值。

但是,肯定的是,如果你把这两个工具并排,并评价它们的速度,那么很明显的情况下,ab将出去执行jmeter。 Jmeter只是做了更多,它记录更多的数据,正在处理更多的逻辑,所以它需要更长的时间来处理单个请求。简单的事实是Jmeter是一个功能齐全的负载测试工具,AB是,好吧,不是。

事情是,负载测试工具的目的不是在块上最快的孩子,而是关于能够建立一个现实的表示形式的负载,你的应用程序可能会碰到它的生活。在这方面,jmeter胜过双手,所以它真的取决于你的要求是什么。如果你只是想使用最少的硬件生成尽可能多的请求,然后ab是一个不错的选择,但如果你想构建一个有代表性的测试,有事务的旅程,条件逻辑和各种其他有用的东西,然后jmeter是的方式去。想象它这样:它们都是Apache项目,但是我认为AB是设计用来测试apache web服务器,但是JMeter是为测试Tomcat而设计的。

现在,我猜测jmeter产生不一致的结果,因为它正在运行的机器上的限制。我打赌你在GUI模式下运行,并至少有一个监听器活动,像这样你要求工具做很多。如果你需要高速率的请求,那么Jmeter有一个瘦和平均模式。通常,对于大容量,最好的做法是在命令行执行测试,只有很少的监听器;有很多关于这个问题的信息在apache jmeter网站。

你应该考虑的另一点,如果你真的进入负载测试,为了真正从这种事情中获得好处,你需要首先决定你需要你的网站支持什么样的负载,然后你应该设计代表这一点的测试。这通过使用起搏和模拟等待时间来实现。告诉一个线程的问题应该只是离开并尽可能快地运行,它将迭代与其本地条件允许的一样快,但总是有一些东西,使休息,甚至ab有限;无论多么轻量级的工具,它仍然做某事。但是如果你调整你的请求,你删除这个问题,作为一个相当有用的额外的好处,你最终在运行和代码之间的一致性,所以即使你的服务器加速或减慢(与代码库的变化)您的测试仍将提出相同的请求率 – 这对于基准测试非常有用。

如果你想采取JMeter进一步看看恒定吞吐量计时器,然后使用多线程来建立你需要表示的流量水平。

http://stackoverflow.com/questions/10260526/which-gets-the-measurements-right-jmeter-or-apache-ab

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:基准测试 – 这得到测量正确,JMeter或Apache ab?