一、之前做稳定性测试,经常负载机会出现卡死的情况,报错内存溢出,现在就分析一下这个
1、jmeter是基于java请求的,所以该进程需要制定特定的JVM设置
配置文件在jmeter.home/bin的jmeter及jmeter.sh文件,配置好环境变量之后,2个命令都可以使用
我是mac所以参照以下参数:
jmeter:GUI运行时的命令,也可以用做jmeter命令行压测
jmeter.sh:基本的脚本命令,需要增加设置JVM参数
jmeter-server:jmeter服务命令,当需要控制代理机器测试时需要启动
2、配置jmeter文件修改堆大小最大内存及初始内存
![Jmeter——Jmeter内Jvm设置 Jmeter——Jmeter内Jvm设置](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzk3NC9kMDYxMjcxZTk3MGMwMTZmM2IzNjQ0MGEzMTUxYjA0ZS5wbmc%3D.png?w=700)
打开jmeter,为了确定我们的设置已经生效,打开jdk中jvisualvm
可以看出JVM参数已经生效
![Jmeter——Jmeter内Jvm设置 Jmeter——Jmeter内Jvm设置](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzg5NS82NjM5ZGM2N2ViZWI2Y2U0OGRkNTJlMDIzZmRkNWIzNy5wbmc%3D.png?w=700)
使用高并发测试,复现一下内存溢出的情况,安装插件,GC结果如下
![Jmeter——Jmeter内Jvm设置 Jmeter——Jmeter内Jvm设置](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzUzLzYzOTk5YTcyYTAwY2YxZWJjNTY0NTc2Y2MwOTM4ZGFkLnBuZw%3D%3D.png?w=700)
jmeter报错如下:
![Jmeter——Jmeter内Jvm设置 Jmeter——Jmeter内Jvm设置](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzI5MC8zMGExZjlhZGU3ZWFjNmJkODc4NTNjODRiZWRhNDBkMi5wbmc%3D.png?w=700)
平常测试时需要注意这一块的东西,jmeter自身进行gc也会对结果产生影响,如果遇到内存溢出
可以增大堆的大小,平时压测时也尽量别使用察看结果树