Jmeter。 JSR223,Groovy。生成的负载不能超过 5 hits/sec

Jmeter. JSR223,Groovy. Can't generate load more than 5 hits/sec

我在 JMeter 3.1 中使用 jsr223 采样器为 HTTP 请求数据生成密钥。 问题是我的脚本使用加密算法,因此,当线程数量增加时,脚本持续时间也会增加(它与用户数量成比例增加)。所以我不能生成超过 5 hits/sec。同时 CPU 利用率保持较低水平(8 核和 32GB RAM)。 您有什么想法可以增加 hits/sec 吗?

我观察到同样的问题。在我的实验中,我发现 JSR223 + Groovy 的执行速度比大多数其他实现选项慢。由于 GC activity,它对垃圾收集和 CPU 开销有很大影响。当我将 JSR223 从 Groovy 切换到 java 时,它仍然有很多锁定并且线程不断地在 beanshell bsh.name.

上被锁定

最后,我将所有 JSR223 测试元素替换为原始 beanshell 元素,例如 beanshell pre-processor/ postprocessor / assertions 和 samplers。这很容易扩展到每秒数千个请求,并且花费的时间 < 1 毫秒。

虽然我看过很多推荐 JSR223 + Groovy 的文章,但它对我来说不起作用。请切换到其中包含 java 代码的 beanshell 元素。它会起作用。

请参考我的文章

JMeter Tuning - JSR223 + Groovy Vs JSR223 + Java BeanShell Vs Raw BeanShell

您是否检查了 jsr223 元素上的缓存?

如果不是,那可能可以解释您的问题。 JSR223 +groovy 缓存检查优于 Beanshell 一个重要因素。

是的,问题可能出在您的代码中,但您可以通过每隔 5 秒创建 3 个线程转储来检查并查看 JMeter 正在做什么?

同时确保您在测试时关注 best-practices: