本节摘要:压测结果准不准,环境配置是关键。本节讲压测机配置、被测环境隔离、监控配置——保证压测结果可信。
阅读完本节,你应当能够:
压测机本身要够强,否则自己先成瓶颈:
HEAP=-Xms4g -Xmx4g
压测时全链路监控:
# 调大堆内存 set HEAP=-Xms4g -Xmx4g set GC_ALGO=-XX:+UseG1GC
⚠️ 常见坑:压测机自己先成瓶颈——CPU 打满、OOM,测出来的是压测机性能不是被测系统。压测机要够强或用分布式。
💡 关键直觉:压测结果准的前提是压测机和环境都不是瓶颈。压测机够强/JVM 调大/非 GUI,被测环境独立接近生产,监控全链路。
下一节讲结果分析——测完怎么看数据出结论。
压测执行环境需要精心准备:压测机与被测系统网络隔离(避免相互影响);压测机配置充足(CPU 多核、内存充裕、禁用超线程干扰);操作系统调优(文件句柄数、TCP 端口范围、timewait 回收);JDK 参数(堆内存 Xmx、GC 策略)。
| 资源 | 建议 | 说明 |
|---|---|---|
| 压测机 CPU | 8 核以上 | 线程调度开销大 |
| 压测机内存 | 16G+ | 结果缓存与线程栈 |
| JVM 堆 | 4-8G | 避免频繁 GC |
| 文件句柄 | 65535+ | 大量连接需要 |
| TCP 端口 | 扩大范围 | 避免端口耗尽 |
执行前检查:压测机负载(top 观察空闲);网络延迟与带宽(ping/iperf);被测系统监控已开启;测试数据就绪;防火墙规则正确。环境问题导致的压测失真(如网络拥塞、句柄耗尽)是最常见的误报来源,务必先排除环境因素再下结论。
压测前用系统命令确认环境:Linux 下用 ulimit -n 查文件句柄限制(需 65535 以上)、free -h 查内存、top 观察负载;Windows 下用 netstat 查端口占用与 TIME_WAIT 数量。若端口耗尽(TIME_WAIT 过多),调整注册表 TcpTimedWaitDelay 或改用长连接减少端口切换。网络层面用 ping 测延迟、iperf 测带宽,确认压测链路不成为瓶颈。
常用 JMeter JVM 调优参数(bin/jmeter 脚本中 HEAP 设置):
HEAP="-Xms4g -Xmx4g" GC="-XX:+UseG1GC -XX:MaxGCPauseMillis=100"
大并发场景适当调大堆内存并采用 G1 垃圾回收器,减少 Full GC 停顿对压测结果的影响。
压测环境与被测环境的隔离:网络隔离(专线或独立 VLAN 避免干扰);资源隔离(压测机专用,不跑其他任务);数据隔离(测试数据与生产数据分离)。隔离不彻底会导致结果失真(网络竞争、资源抢占),严谨的压测环境是可信结果的必要条件。
执行前做环境验证:跑一次小规模冒烟(10 线程 1 分钟),确认链路、数据、监控都正常;对比压测机与被测系统的时间(NTP);验证结果文件可写入(磁盘空间);确认防火墙与端口。冒烟通过后再跑正式场景,避免浪费大规模压测的资源。
总结:执行环境的规范准备是压测结果可信的前提。资源调优、隔离设计、冒烟验证三步缺一不可,环境问题导致的失真往往比被测系统本身的问题更难发现,务必在正式压测前排除。