如何分析JMeter测试结果?

52

我是JMeter工具的新手。有没有人能帮我找到分析JMeter报告的最佳方法?


哪个具体的报告? - blank
7个回答

51

这是一份相关链接列表,你可能会发现它们很有用:

原生图表:

自动化绘图的免费开源解决方案:

使用自定义开发的配方:


更新。
请查找、使用并随意扩展此 JMeter神器集合,继续作为 Github代码库


@Alies,请问你能帮我解决这个问题吗?http://goo.gl/URsAFM 我真的需要一些帮助。 - Axel
1
很好的帖子!我们创建了一份巨大的指南,提供了深入的评论,介绍了12种惊人的分析JMeter结果的方法:https://octoperf.com/blog/2017/10/19/how-to-analyze-jmeter-results/ - Jerome L

8

进行性能测试时必须进行三项测试,其中应始终包括基线测试、峰值测试和压力测试。这些测试与小定律有关。一个稳定系统中长期平均客户数量L等于长期平均有效到达率λ乘以客户在系统中停留的时间W;或用代数方式表示:L = λW。

enter image description here

Jmeter已经提供了检查这些值的方法,标准插件提供响应时间、访问次数以及吞吐量的绘图。没有直接的方法可以告诉你有多少用户在系统上活跃,这与并发用户不同。插件足以生成报告,但它们不允许控制演示文稿的大部分内容,我将使用一些使用Python生成的绘图(它们添加标签,并具有2个y轴)。

基准测试: 这种情况是法律的一个特殊情况,在这种情况下,活跃用户是恒定的,为1,则:

  • L = λW
  • 1 = λW
  • 1/W = λ

enter image description here

如果应用程序运行相同的代码片段,响应时间将稳定下来,那么到达率也会随着时间的推移保持不变。
有一个服务只是等待一些时间过去:

enter image description here

2秒服务:到达率为1/2TPS。

enter image description here

3秒服务: 到达率为1/3TPS。

enter image description here

峰值测试: 这是另一种特殊情况,此时负载增加直至超过系统的吞吐量,因为负载大于吞吐量,响应时间会增加。在测试期间,线程数应该足够快地增加以从长时间的响应时间中恢复。

enter image description here

这次测试中,我不会让系统跑到极限,而是会给它施加超过其承载能力的负载。为了控制服务的吞吐量:

enter image description here

活动事务是指已经离开注入器但尚未获得响应的事务,这些事务在系统内的某个位置排队。

  • λ(t) = c,T(t) = k;负载和吞吐量随时间保持不变。
  • L = Σλ - ΣT = ct - kt;活动事务是累积负载和累积吞吐量之间的差异。
  • L = (c - k)t
  • λW= (c - k)t
  • cW(t) = (c - k)t
  • W(t) = t(c - k)/c

因为响应时间随着活跃用户的增加而增加,所以我们需要注入器根据需要创建新线程,大部分池线程将处于繁忙状态。

2TPS到达率,1 TPS吞吐量:

  • 响应时间函数为1/2t
  • 注入器在300秒内压力测试系统。
  • 测试持续600秒。

enter image description here

4TPS到达率,1TPS吞吐量:

  • 响应时间函数为3/4t
  • 注入器在300秒内对系统进行压力测试。
  • 测试持续1200秒。

enter image description here

6TPS的到达率,5TPS的吞吐量:

  • 响应时间函数为1/6t
  • 注入器在300秒内对系统进行压力测试。
  • 测试持续360秒。

enter image description here


4

简单来说,如果您想分析JMeter报告...

  1. Start with server CPU and RAM utilization. When you run a performance test on your server, see how much CPU and RAM is utilized by the current test.
    Issue the following command on hosted site server; it will create a log file of CPU usage.

    while true; do 
      ( echo "%CPU %MEM ARGS $(date)" &&
        ps -e -o pcpu,pmem,args --sort=pcpu | cut -d" " -f1-5 |
        tail ) >> ps.log
      sleep 1
    done
    
  2. See overall response time, it should not exceed your expected response time criteria. See below image. My expectation is response time should not go above 525 microseconds, but some requests are crossing it. Find these kind of requests which are taking time.

    Overall Response Times:

    overall response time

  3. See Transaction per second, how many transaction are made per second and is there any drop in the test time frame?

  4. Inspect the summary report, Average time, and max time to see which requests are taking the most time. Currently many listeners are available in JMeter as add-ons or built in, but these are the major things to look at in order to be able to guess properly what's going on. And you can use other reports like that.

关注我的博客以获取更多细节信息:https://softwaretesterfriend.blogspot.in/


2

2
从3.0版本开始,JMeter包括一个动态HTML报告,可以在负载测试结束时或从结果文件中生成。
请参见生成仪表板

0

0
除了其他答案之外,还有一个很棒的BlazeMeter网站,您可以上传测试结果文件(.jtl),它将为您生成各种(交互式)报告。它甚至会为您分析,指出第一个错误发生的时间,饱和点等等。如果您有graphite/grafana基础设施,我建议您将Backend Listener添加到项目中。它将向graphite服务器实时发送度量数据,您可以在graphite(或grafana)中监视测试。https://sense.blazemeter.com/gui/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接