Ubuntu下解决JMeter内存溢出的实用步骤
一 快速定位问题类型
二 调整JVM堆与元空间参数
三 优化测试计划与运行方式
四 系统层面的检查与调优
五 常见场景与建议配置
| 场景 | 主要现象 | 优先动作 |
|---|---|---|
| 堆内存不足(Java heap space) | 日志出现OutOfMemoryError,JMeter卡顿或崩溃 | 提升**-Xmx**(不超物理内存50%),优化脚本与监听器,必要时分布式 |
| 系统内存不足(errno=12) | 无法提交内存、启动失败 | 降低堆/线程数、增加内存或swap、检查容器配额 |
| 栈溢出(StackOverflowError) | 递归/批量处理导致 | 增大**-Xss**、拆分批次、减少单次处理数据量 |
| 持久代/元空间问题 | 旧版JDK出现PermGen;JDK8+为Metaspace | 升级JDK 8+并用**-XX:MaxMetaspaceSize**合理设置,减少类/静态膨胀 |
| 线程/连接瓶颈 | 超时、连接失败 | 用jstack排查死锁/阻塞,优化中间件与数据库线程池、连接池配置 |