为什么JMeter的线程号根本不转换为TPS?

icnyk63a  于 2023-06-23  发布在  其他
关注(0)|答案(1)|浏览(169)

我有一个测试计划,它调用了一个带有步进线程组的操作:

当我运行这个配置时,我得到了下面的TPS图:

我只能假设这平均TPS超过一分钟。观察最大TPS在65左右。
如果我们看一下响应时间与每秒请求数,我们会发现每秒有251个请求。

此外,整个运行的样品总数为23,904。
我期望TPS图显示每秒的数据点。为什么它只显示在一分钟内聚合的 * Transactionsper second*(没有指示使用了什么统计数据)?
如果我只考虑一分钟,我期望总样本计数至少为500 * 60 = 30,000(例如,在20 - 80秒之间)。为什么我总共有23K?我的服务的 Jmeter 板确认了低请求量(看不到TPS,但TPM大约每分钟2k)。

为什么请求计数会随着线程的增加而下降(例如:前2分钟是500,最后应该是2000线程)?
我下面的基本假设是错误的吗?
我假设JMeter的线程组(这里是一个步进组)启动,例如:500个线程。所有500个线程都发送一个请求。由于大多数请求的响应时间都低于1秒,我希望至少有500 TPS。我错过了什么?看看其他SO答案,似乎每个线程都应该尽可能快地执行所有采样器。是否有图表显示每个采样器需要多长时间?我试着去掉所有的,但没有改变任何东西。
附带问题:我使用Plugin Manager,如果通过UI运行JMeter,我设置的其他图形会显示(特别是一个真实的TPS图形,每秒都有数据点),但如果通过CLI运行,我无法在生成的html报告中找到这些图形。我怎么把这些都包括进去?
提前感谢,让我知道,如果你需要任何其他指标/图表从默认的html报告。

8wtpewkr

8wtpewkr1#

我只能假设这平均TPS超过一分钟。
你很聪明,钉了它:

“粒度”可以通过jmeter.reportgenerator.overall_granularity JMeter属性控制,因此您可以考虑将默认值60000 ms修改为更低的值,即还有五秒
您可以从现有的.jtl文件重新生成报告 Jmeter 板,如下所示:

jmeter -Jjmeter.reportgenerator.overall_granularity=5000 -g /path/to/result.jtl -o /path/to/dashboard

如果您希望更改是永久性的,请将jmeter.reportgenerator.overall_granularity=5000行放到 * user.properties * 文件中。
一般来说,如果每秒的事务数与吞吐量不一致,这意味着要么JMeter不能足够快地运行请求,要么你的应用程序不能足够快地处理它们,所以无论如何都需要对其进行分析。
更多信息:

相关问题