本次我们以一次压测项目的实施过程为背景,详细介绍其具体的问题分析过程,无论是任何性能问题的分析都是需要通过现象分析本质,一步步抽茧剥丝找到问题的源头。
1、压测项目描述
压测目标:TPS达到5000
脚本描述:使用Jmeter压测工具编写,tcp sample为核心使用JRSS22预处理器和if控制器
场景描述:执行稳定性测试场景,运行12小时
环境描述:Jmeter压测环境使用Linux作为Agent压测
问题描述:在执行稳定性场景过程中,Jmeter客户端报错
错误信息如下:java.lang.OutOfMemoryError:Metaspace
2、分析问题过程
1)怀疑Jmeter本身的Metaspace空间设置过小导致OOM。做如下验证:
a、修改Metaspace空间大小,在jmeter.sh启动文件中修改为1024
-Xms4g-Xmx4g -XX:MetaspaceSize=1024m -XX:MaxMetaspaceSize=1024m,并重启Jmeter
b、配置监控Jmeter内存的工具Glowroot,以及监控命令jstat
c、重新执行稳定性测试场景进行验证
d、验证结果:随着场景的执行时间,执行一段时间后仍然有内存OOM问题
通过在Jmeter上配置glowroot监控工具重点监控metaspace