一、系统级基础优化
/etc/sysctl.conf
中的net.ipv4.tcp_tw_reuse=1
(重用TIME_WAIT连接)、net.core.somaxconn=4096
(增加连接队列长度);关闭SELinux(setenforce 0
),减少其对JMeter网络通信的限制;增大系统文件句柄限制(ulimit -n 65535
),避免高并发下出现“Too many open files”错误;同步服务器时间(ntpdate ntp.aliyun.com
),确保分布式测试时间一致性。二、JMeter自身配置优化
jmeter
启动脚本(bin/jmeter
)中的HEAP
参数,设置合理的堆内存大小(如HEAP="-Xms4g -Xmx4g -XX:MaxMetaspaceSize=512m"
),避免频繁垃圾回收导致的停顿;可进一步优化新生代比例(-XX:NewRatio=2
)和Survivor区比例(-XX:SurvivorRatio=8
),提升GC效率。jmeter -n -t test.jmx -l result.jtl -e -o ./report
),避免GUI模式的图形渲染消耗大量内存(约30%额外开销);测试完成后通过-e -o
参数生成HTML报告,替代GUI中的实时监听器。三、分布式测试配置
jmeter.properties
中的remote_hosts
参数(如remote_hosts=192.168.1.101:1099,192.168.1.102:1099
),指定所有分布式节点的IP和端口;设置server.rmi.ssl.disable=true
,关闭SSL加密以减少通信开销;确保所有节点时间同步(使用NTP服务)。四、性能监控与问题排查
top
(查看CPU、内存占用)、free -h
(查看内存使用)、df -h
(查看磁盘空间)、netstat -tulnp
(查看网络连接)等命令实时监控系统状态;安装htop
(增强版top)、iotop
(查看磁盘I/O)等工具,更直观地分析资源瓶颈。jmeter -n -t test.jmx -l result.jtl -j jmeter.log
),通过日志排查请求失败、超时等问题;使用grep "ERROR" jmeter.log
过滤错误日志,快速定位异常。jstat -gcutil <pid> 1000
(每秒监控GC情况)、jvisualvm
(图形化工具查看堆内存)等工具,观察堆内存是否持续增长(如Old区占比超过70%且不下降);若存在内存泄漏,检查脚本中是否有未关闭的资源(如HTTP连接、文件流),或优化集合使用(避免静态集合无限增长)。五、其他优化技巧
result.jtl
、HTML报告),避免磁盘空间耗尽。