You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JMeter脚本在Linux虚拟机无法达标TPS/RPS,求配置优化方案

JMeter性能调优方案:解决Linux虚拟机TPS低于Mac的问题

问题背景

我通过Throughput Shaping Timer配置了目标为100 TPS/RPS的JMeter脚本,在Mac系统(11.6版本)的GUI模式下可达到约99 TPS/RPS,但在Red Hat Enterprise Linux 8.6虚拟机中仅能达到约60 TPS/RPS。Linux系统日志提示:No free threads available in current Thread Group Device Service。两台设备均使用JMeter 5.4.3版本,初始堆内存配置均为${HEAP:="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"},已尝试将Linux虚拟机的堆内存调至13g,仍无法达到预期性能。线程组配置如下:
线程组配置图


一、线程组核心参数调整

  • 增大线程池上限:日志明确显示可用线程不足,当前线程组线程数设置为100,建议调整为150-200(可根据压测结果逐步微调),确保有足够线程处理请求峰值。
  • 优化线程生命周期:勾选Delay Thread creation until needed选项,避免初始化阶段一次性创建所有线程;设置合理的Thread lifetime(如300秒),及时回收空闲线程释放资源。

二、JMeter运行模式优化

  • 强制使用命令行模式:Linux压测必须禁用GUI模式(GUI会占用大量系统资源),执行压测命令:
    jmeter -n -t your_script.jmx -l result.jtl
  • 清理冗余监听器:移除脚本中Graph Results、View Results Tree等重型监听器,仅保留Summary Report这类轻量级监听器,减少性能消耗。

三、JVM参数精细化调优

  • 合理设置堆内存:过大的堆内存会增加GC停顿时间,建议调整为:
    export HEAP="-Xms8g -Xmx8g -XX:MaxMetaspaceSize=512m"
    同时添加GC优化参数,降低停顿影响:
    export GC="-XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+ParallelRefProcEnabled"
  • 移除调试参数:检查jmeter.sh配置,确保没有-Xdebug等调试类参数,这类参数会严重拖累性能。

四、Linux系统层面优化

  • 提升文件描述符上限:JMeter压测会占用大量网络连接,临时调整执行:
    ulimit -n 65535
    永久生效需修改/etc/security/limits.conf,添加:
    * soft nofile 65535
    * hard nofile 65535
    
  • 优化内核网络参数:编辑/etc/sysctl.conf添加以下内容,提升并发连接处理能力:
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_fin_timeout = 30
    net.core.somaxconn = 65535
    
    执行sysctl -p使配置立即生效。

五、Throughput Shaping Timer配套调整

  • 设置请求预热阶段:在Throughput Shaping Timer中配置前30秒从50TPS逐步提升至100TPS,避免瞬间高并发导致线程池耗尽。
  • 替换为Concurrency Thread Group:放弃固定线程组,改用Concurrency Thread Group,它能根据吞吐量动态调整线程数量,更适配Throughput Shaping Timer的目标TPS需求。

内容的提问来源于stack exchange,提问作者SAIR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 02:01:14