1. 苏葳的备忘录首页
  2. 开发工具

JMeter运行多个不同并发的线程组并汇总信息

jmeter

JMeter是一款功能相当强大的开源压测工具,还有种类繁多的插件。能完成相当复杂的测试任务。由于工作所限,一般只用JMeter来测试些简单的tcp通讯交易。近期看到一张测试报告,里面有如下的结果图表:

jmeter的Summary report

可以看到里面有线程并发数不同的多个采样器的执行结果。这样测试的话,能直观的反映出不同请求并发数对交易性能的影响。便于找出交易系统的容量上限。

那么怎么实现这样的测试结果呢?

打开JMeter的GUI界面看了一下,线程数只能在线程组上设置,并不能在采样器上设置。所以一个线程组内多个采样器看来不适用于这个场景。那么试下多线程组。复制多个当前线程组,然后分别设置各线程组的线程并发数为10/20/40/80/120/160。注意从小往大,从上往下的顺序。因为一些测试计划的元素的执行顺序是位置相关的。

jmeter的线程组设置

其实线程组的名字大约没什么影响,只是便于查看区分而已。注意线程数量处填写的:

${__P(NOT,160)}

这是JMeter的一种命令行传参形式。若未传此参数NOT,则会使用默认值160。在线程组的参数中,由于本次测试方法预定是每个线程组执行2分钟后,执行下一个线程组。所以把循环次数设成“无限”,并“指定线程生存期”为120秒。

另外注意由于要执行多个线程组,所以需要把一些报告分析组件放在线程组并列的级别。如上图的Aggregate Report/jp@gc – Active Threads Over Time(是个插件)/Summary Report等。

然后需要修改的就是每线程组内的采样器名称,这个比较重要,为什么重要后面再讲。

jmeter的多线程组设置

现在线程组建立完毕了,我们要修改测试计划的设置,把Run Thread Groups consecutively这个复选框给选中,这样能保证各个线程组顺序执行。配置完成,现在可以执行测试计划了。执行中,可以切换到Aggregate Report,实时查看压测执行的结果:

jmeter的Aggregate Report

当然,在实际测试中我们会放在linux服务器上执行测试,以减少windows机性能对测试结果的影响。也可以配置相应的压测服务器集群等。在Linux上压测完成之后,我们把.jtl文件传到win机上,用Aggregate Report打开,也能生成上面一样的结果。基本上,各种压测报告的生成依赖于对jtl文件的分析。所以,如果在采样器那里,没有给每个线程组的采样器重新命名,那就会造成所有采样器的数据被统计成一行的后果。

在jp@gc – Active Threads Over Time插件中可以查看线程的实时变化结果:

jmeter的jp@gc - Active Threads Over Time插件

本文只是作为JMeter初学者的一些经验分享,由于JMeter支持脚本和各种插件,相信专业的测试大佬会有更好的方法实现。

原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/2243.html

发表评论

邮箱地址不会被公开。 必填项已用*标注