JMeter日志中的请求和线程理解

时间:2017-06-09 09:39:15

标签: jmeter jmeter-plugins

我仍然对此处显示的一些JMeter日志感到困惑。有人可以告诉我这个吗?

以下是JMeter为我的测试生成的日志。

Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
summary +      1 in 00:00:02 =    0.5/s Avg:  1631 Min:  1631 Max:  1631 Err:     0 (0.00%) Active: 2 Started: 2 Finished: 0
summary +    218 in 00:00:25 =    8.6/s Avg:   816 Min:   141 Max:  1882 Err:     1 (0.46%) Active: 10 Started: 27 Finished: 17
summary =    219 in 00:00:27 =    8.1/s Avg:   820 Min:   141 Max:  1882 Err:     1 (0.46%)
summary +     81 in 00:00:15 =    5.4/s Avg:   998 Min:   201 Max:  2096 Err:     1 (1.23%) Active: 0 Started: 30 Finished: 30
summary =    300 in 00:00:42 =    7.1/s Avg:   868 Min:   141 Max:  2096 Err:     2 (0.67%)
Tidying up ...    @ Fri Jun 09 04:19:15 IDT 2017 (1496971155116)

此日志是否意味着[最后一步]触发了300个请求,整个测试的00.00:42秒,7.1个线程/秒或7.1个请求/秒被触发?

我如何确保增加TPS?在不同的站点中进行了相同的测试,并且他们在相同的测试和同一服务器上获得132TPS。有人可以对此有所启发吗?

2 个答案:

答案 0 :(得分:1)

在此处,请求总数为300.吞吐量为每秒7个请求。这些300个请求由线程组配置中给定数量的线程生成。您还可以在日志结果中查看活动线程的数量。这些线程变为活动状态取决于您的加速时间。

加速时间是用户或线程到达应用程序的速度。

选中此示例:How should I calculate Ramp-up time in Jmeter

您可以在脚本中提供足够的持续时间并永远检查循环计数,以便在测试完成之前,所有线程都将在应用程序服务器中访问这些请求。

当所有线程在服务器上变为活动状态时,它们将在服务器中命中这些请求。

要增加TPS,您必须增加线程数,因为这些线程将在服务器中达到您想要的请求。

它还取决于您的请求的响应时间。

假设,

  1. 如果您有500个虚拟用户且应用程序响应时间为1秒 - 您将获得500 RPS

  2. 如果您有500个虚拟用户且应用程序响应时间为2秒 - 您将获得250 RPS

  3. 如果您有500个虚拟用户且应用程序响应时间为500毫秒 - 您将获得1000 RPS。

答案 1 :(得分:0)

首先,一点理论:

  • 您有Sampler(s)应该模仿真实的用户操作
  • 您在Thread Group下定义了模仿真实用户的线程(虚拟用户)
  • JMeter启动线程,尽可能快地执行采样器,并每秒生成一定量的请求。此“每秒请求数”值取决于两个因素:

    • 虚拟用户数
    • 您的申请响应时间

JMeter Summarizer没有说明完整的故事,我建议从.jtl结果文件中生成HTML Reporting Dashboard,它会提供更全面的负载测试结果数据,这更容易分析在表格和图表中,它可以简单地完成:

jmeter -g /path/to/testresult.jtl -o /path/to/dashboard/output/folder

查看当前结果,您获得了7.1 请求秒的最大吞吐量,平均响应时间为868毫秒。

因此,为了获得更多“每秒请求数”,您需要增加“虚拟用户”的数量。如果增加虚拟用户数并且“每秒请求数”没有增加 - 这意味着您确定了所谓的saturation point并且您的应用程序无法处理更多。