CentOS上JMeter测试效率优化指南
一 运行环境与JVM设置
jmeter -n -t script.jmx -l result.jtl。为便于基线回归,使用**__P()函数将并发与循环参数化:jmeter -n -t script.jmx -Jconcurrent_number=200 -Jcycles=5 -l result.jtl,脚本中用${__P(concurrent_number,1)}、${__P(cycles,1)}读取。生成的JTL建议采用CSV**格式,减少I/O与序列化成本。jmeter或jmeter.sh中的HEAP/JVM_ARGS,如:-Xms4G -Xmx4G -XX:MaxMetaspaceSize=512m(堆大小不应超过物理内存的2/3,并预留系统与其他进程内存)。HTTP客户端建议开启连接保活与合理空闲超时,例如在jmeter.properties中设置:httpclient4.idletimeout=10000(单位毫秒)。二 操作系统与网络调优
ulimit -n 102400;永久:在/etc/security/limits.conf添加* soft nofile 65536、* hard nofile 65536、* soft nproc 65565、* hard nproc 65565,并重启会话或系统生效。/etc/sysctl.conf中设置:net.ipv4.tcp_tw_reuse=1、net.ipv4.tcp_fin_timeout=30、net.ipv4.ip_local_port_range=1024 65000,执行sysctl -p生效。worker_connections(例如64000)与keepalive_timeout(例如60s),以匹配更高的并发连接与复用需求。deadline/noop),并优化vm.dirty_ratio/vm.dirty_background_ratio以平衡写回与延迟;使用top/htop/vmstat/iostat持续观测CPU、内存、I/O与网络,定位瓶颈。三 脚本与监听器策略
四 分布式压测扩展
jmeter.properties中配置remote_hosts=ip:1099,ip:1099;为简化排障,可在Slave上设置server.rmi.ssl.disable=true并固定RMI主机IP(如jmeter-server -Djava.rmi.server.hostname=IP)。jmeter -n -t script.jmx -l result.jtl -e -o /path/report -R 192.168.30.132:1099,192.168.30.130:1099;注意-l指定的JTL与-o指定的报告目录必须不存在,否则会报错。