为啥建议在 jmeter 中以非 gui 模式运行负载测试

Posted

技术标签:

【中文标题】为啥建议在 jmeter 中以非 gui 模式运行负载测试【英文标题】:Why it is recommended to run load test in non gui mode in jmeter为什么建议在 jmeter 中以非 gui 模式运行负载测试 【发布时间】:2021-04-19 16:36:55 【问题描述】:

我正在监控在 GUI 模式下运行时从 jmeter 机器连接的连接时间和延迟,这在可接受的范围内。

即使我可以使用 GUI 模式执行负载测试,我们是否应该严格遵循非 GUI 模式?

我的目标是 250 TPS,并且能够实现这一目标。我增加了内存并监控 CPU,负载生成器的内存低于 60%。

我应该选择非 GUI 模式吗?

【问题讨论】:

【参考方案1】:

主要限制是queue 中的每个事件都由单个事件调度线程处理,该线程将充当 JMeter 端的bottleneck。

我的期望是你的“250 TPS”看起来像:

它应该看起来像:

因此,使用 Transactions per Second 侦听器(可通过 JMeter Plugins Manager 安装)检查您的负载模式如何

同时检查您的 JVM 的外观,尤其是当涉及到 garbage collection 时,可以通过 JVisualVM 完成,很可能您会看到相同的“电锯”模式

【讨论】:

【参考方案2】:

你不需要关注JMeter best practices,但是

您可能会遇到实现特定目标(如 TPS)的问题

您的机器无法执行 GUI 或资源不足

您使用脚本或构建工具作为 Jenkins 执行 JMeter

另外,最好熟悉 JMeter CLI(非 GUI)及其report capabilities

JMeter 支持仪表板报告生成以从测试计划中获取图表和统计数据。

使用分布式测试也需要它

考虑使用分布式模式(或不使用)在多台机器上运行多个 CLI JMeter 实例

CLI 对于Parameterising tests 也很有用

然后可以在 JMeter 命令行上定义“循环”属性:

jmeter … -Jloops=12

【讨论】:

但是我能够在 GUI 模式下实现我的目标 TPS。我对 CLI 模式报告不感兴趣。我想了解在 gui 模式下运行时可能出现的其他限制 @Mani 目前可以,没关系,但是当你添加更多请求后,更多的 TPS 你会达到比非 GUI 模式下限,还有一些计算机不能执行 GUI 模式,你可以'每次执行都很难使用 JMeter 属性

以上是关于为啥建议在 jmeter 中以非 gui 模式运行负载测试的主要内容,如果未能解决你的问题,请参考以下文章

Firefox headless 不能在 Docker 中以非 root 用户身份工作

JMeter 非 GUI 模式运行

非GUI模式下运行JMeter

在 ibm Mobilefirst 中以非活动模式推送通知

如何使perl在NFS中以非阻塞模式锁定文件

JMeter基础 — 使用非GUI模式运行JMeter(命令行模式)