VariableThroughputTimer:工作池 jmeter 中没有空闲线程

VariableThroughputTimer: No free threads left in worker pool jmeter

我在 JMeter 中使用吞吐量整形计时器 我偶尔会看到如下警告消息:

2020-01-21 17:02:01,007 警告 k.a.j.t.VariableThroughputTimer:工作池中没有空闲线程,制作了 316/500.0 个样本 2020-01-21 17:02:02,009 WARN k.a.j.t.VariableThroughputTimer:工作池中没有空闲线程,制作了 164/500.0 个样本 2020-01-21 17:02:03,016 WARN k.a.j.t.VariableThroughputTimer:工作池中没有空闲线程,制作了 263/500.0 个样本 2020-01-21 17:02:04,009 WARN k.a.j.t.VariableThroughputTimer:工作池中没有空闲线程,制作了 311/500.0 个样本 2020-01-21 17:02:05,009 警告 k.a.j.t.VariableThroughputTimer:工作池中没有空闲线程,生成了 288/500.0 个样本

我正在使用目标并发:${__tstFeedback(rate_profile,100,5000,500)}

我需要达到 500 tps,我无法使用此插件从 jmeter 服务器实例中获得超过 270 tps。

监视器指示 CPU,磁盘、网络、内存资源可用,但是,测试开始记录此警告

你能帮忙吗?

报错说明你设置的太低了Spare threads ratio,试试调高:

  • 开始并发
  • 备用线程配给

2 倍。

还要考虑将线程数与应用程序响应时间相关联。

还值得检查 JMeter 的 JVM 指标,例如 heap space usage and garbage collection 间隔,JMeter 的 JVM 堆使用率需要在 40% 到 70% 之间才能获得最佳性能

可以使用 JVisualVM

监视 JMeter JVM 设置

如果单个 JMeter 实例无法产生所需的负载,您将不得不寻求 Distributed Testing


另请记住,您的应用程序可能无法足够快地响应,因此值得检查其健康指标、性能指标和日志。

With this config ${__tstFeedback(rate_profile,100,5000,500)}, the number of threads used by the jmeter process is 120 in the VM,
I used another config $ {__ tstFeedback (rate_profile, 300,3000,0.75)} so that the number of threads increases to 320,
therefore the number of TPS has increased to 500 TPS.