一、具体现象:当使用 Jmeter 进行性能测试时, "Active Threads Over Time" 插件生成的图像与 Grafana 中 "Active Threads" 面板中的图像不一致。


二、分析过程:

  1. 从图像信息来分析, Jmeter 图像所表达的是 “某时刻活跃的进程数量”,而 Grafana 图像所表达的是 “测试过程中,曾经活跃的最大线程数”。
  2. 通过查看 Json Model 中 "Active Threads" 部分发现,Model 规定 last(maxAT) 作为 active thread 的数量被标记在 Grafana 上。

  3. 查看 Influxdb 可以发现,随着时间推移,当某时刻达到最大活跃线程数时,后续所有数值都记录为最大活跃线程数。

  4. Influxdb 线程数相关指标
    test.minAT-Min active threads:最小活跃线程数
    test.maxAT-Max active threads:最大活跃线程数
    test.meanAT-Mean active threads:活跃线程数
    test.startedT-Started threads:启动线程数
    test.endedT-Finished threads:结束线程数

三、优化:修改 Model 中的语句, 使用 last(startedT) - last(endedT)替换 last(maxAT) 作为某时刻的线程数。


四、瑕疵:这种方法只能保证图像相似,但不能保证数据也完全一致;所以此方法适合数据展示,如果要分析问题,还是以 Jmeter 的图像来分析较好。

五、疑问:是否有大佬知道, Grafana 的 "Active Threads" 面板表达的内容,究竟是 “某时刻的活跃线程数” 还是 “最大活跃线程数” ?


↙↙↙阅读原文可查看相关链接,并与作者交流