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,请查看“恒定吞吐量计时器”,然后使用多个线程来构建您需要表示的流量级别。



