1. 调整JVM内存参数,避免内存溢出
JMeter的内存占用主要来自JVM堆内存,合理配置可显著提升性能。编辑JMeter启动脚本(如jmeter.sh),通过JAVA_OPTS或直接修改脚本中的JVM_ARGS设置:
-Xms4g);-Xmx4g);-XX:MaxMetaspaceSize=512m),防止元空间溢出;JAVA_OPTS="-Xms4g -Xmx4g -XX:MaxMetaspaceSize=512m -XX:+UseG1GC"2. 使用非GUI模式运行测试,减少资源消耗
GUI模式(如通过jmeter命令带图形界面)会消耗大量内存(约30%以上)和CPU,仅用于脚本调试。正式测试时使用命令行模式(CLI):
jmeter -n -t /path/to/test_plan.jmx -l /path/to/results.jtl
其中-n表示非GUI模式,-t指定测试计划文件,-l指定结果输出文件
3. 优化JMeter脚本,减少不必要的开销
-l参数生成报告;Loop Count=1),避免无限循环或过多重复请求4. 调整系统内核参数,提升系统性能
通过修改/etc/sysctl.conf文件优化内核参数,提升网络和内存处理能力:
vm.swappiness=10(值越小,系统越倾向于使用物理内存);vm.dirty_ratio=20(内存脏页占比阈值,超过则触发刷新)、vm.dirty_background_ratio=10(后台刷新阈值);net.core.somaxconn=65535(最大连接队列长度)、net.ipv4.tcp_max_syn_backlog=65535(SYN队列长度)、net.ipv4.tcp_fin_timeout=30(FIN超时时间)、net.ipv4.tcp_tw_reuse=1(允许复用TIME_WAIT套接字);net.core.default_qdisc=fq、net.ipv4.tcp_congestion_control=bbr(提升网络吞吐量)。sysctl -p使配置生效5. 配置系统资源限制,避免进程被限制
编辑/etc/security/limits.conf文件,增加JMeter进程的资源限制(针对运行JMeter的用户,如jmeter):
jmeter soft nofile 65535(单进程最大打开文件数软限制)、jmeter hard nofile 100000(硬限制);
jmeter soft nproc 65535(单用户最大进程数软限制)、jmeter hard nproc 100000(硬限制)。
修改后重新登录用户使配置生效
6. 启用分布式测试,分散资源压力
当单台CentOS服务器无法满足并发需求时,使用多台服务器组成分布式集群:
jmeter-server(./bin/jmeter-server);jmeter.properties文件中配置remote_hosts(如remote_hosts=192.168.1.101:1099,192.168.1.102:1099);jmeter -n -t test_plan.jmx -r命令启动分布式测试(-r表示远程启动所有节点)。7. 监控系统资源,及时发现瓶颈
使用工具监控CentOS系统的CPU、内存、磁盘I/O、网络等资源使用情况,定位性能瓶颈:
top(查看CPU、内存占用)、htop(更直观的资源监控)、vmstat 1(查看系统整体状态,如进程、内存、I/O);iostat -x 1(查看磁盘读写速率、I/O等待时间);iftop(查看网络带宽占用)、nload(实时流量监控);jp@gc - PerfMon Metrics Collector插件,收集服务器的CPU、内存、磁盘I/O等指标,结合Grafana可视化展示8. 优化硬件配置,提升基础性能