我正在使用非GUI模式的Linux虚拟机上使用吞吐量整形计时器运行100 RPS/TPS的JMeter脚本,因为在有足够的RAM和CPU资源可用的情况下,我无法达到所需的TPS/RPS。
我使用ThreadDump,发现200个线程中有195个线程处于阻塞状态。线程转储分析位于:
Thread Dump Analysis
这是在执行每个请求之前需要生成动态标头的API脚本。动态标头如下所示:
- contentMD 5-请求正文的MD5哈希
1.客户端-客户端类型APP - nonce -唯一的当前时间戳
- apikey-sha 512 Hmac字符串,该字符串由连接方法、主体、路径、md5等生成。
以上标头是使用JSR 223预处理器生成的。生成的标头也会在采样器执行后使用JSR 223后处理器删除。
1条答案
按热度按时间xv8emn3q1#
线程转储显示问题出在JSR223测试元素上,最有可能的是Groovy代码有问题,最有可能的是内联了JMeter Functions or Variables
1.请确保从代码中删除所有对函数或变量的调用
1.尝试使用脚本文件,而不是将代码放入JSR223测试元素中
1.使用profiler tool来找出代码问题的根源
1.如果您达到了Groovy脚本引擎性能的极限,请考虑moving your custom code logic into a JMeter Plugin或切换到Distributed Testing