记一次压测下的OOM排查

1 篇文章 0 订阅

一、问题描述

项目现场压测登陆接口,说并发30左右服务就会卡死。由于现场不能通过外网远程连接,只能本地复现下(配置文件、项目版本、启动参数等都保持一致)。
压测工具:jemeter
压测功能:登陆接口
问题简述:并发30,后端出现OOM。
在这里插入图片描述

二、解决思路

没想到居然真的复现了,既然是排查OOM,就用java自带的VisualVM工具吧,需要初步排查是哪些对象占用了堆内存。

1、使用VisualVM排查jvm内存:

(1)目录在C:\Program Files\Java\jdk1.8.0_144\bin下,有个jvisualvm.exe。
(2)启动后,选择本地连接,连上自己的测试项目。
示例图一个是jemeter,一个是测试项目
在这里插入图片描述
连上后的效果,可以看到cpu、堆内存、元空间、类加载数量、线程等信息(jemeter为例):
在这里插入图片描述
(4)使用jemeter压测30个线程并发(测试项目为例):
在这里插入图片描述
可以看到,压测开始的那一瞬间,cpu直接飙升,而且堆空间的使用空间也飙升。点击右上角,看堆信息:
堆空间内存
点击 类 -> 大小排序,发现byte[]数组实例只有0.5%,但是却占用了91%的内存空间!!!那说明每个byte[]对象都是大对象!查看下大对象:
在这里插入图片描述

找重复的对象,然后看下,发现一点端倪
大对象属性

①后端报错的是http-nio连接;
②堆信息显示的大对象也是http相关的:
③后端效果,接口并没有打印相关执行日志且有full gc发生;
可以大胆猜测是tomcat的问题

2、检查配置文件

配置文件:
在这里插入图片描述

看到配置文件发现4、6行居然和大对象的size一样?!测试后发现,max-http-header-size才是罪魁祸首,将该参数调小至实际情况即可。

三、解决方案

配置文件max-http-header-size属性,根据项目实际情况配置。

四、小结

1、max-http-header-size是请求头参数大小,tomcat会创建预留空间,即使header实际参数没那么大,也会创建那么大的空间。
2、从二.1.(4)最后的大对象属性图能看出来,tomcat会按照max-http-header-size的配置属性创建两个对象,这也解释了为什么2G内存的JVM在30并发左右就OOM+FULL GC了(2048 / 60 =34.13 )
3、max-http-header-size默认配置,tomcat 5是4kb,tomcat 8是8kb
在这里插入图片描述

萌新发言,不喜勿喷,欢迎大佬指出不当之处!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Linux下使用JMeter进行压测时遇到OOM(Out of Memory)问题,根据引用中提到的情况,压测并发量达到30左右时,后端出现OOM。解决该问题的思路如下: 1. 了解问题:首先,我们要了解OOM是由内存溢出引起的。根据引用中的录,它可能是由于应用程序的内存使用超出了可用内存的限制导致的。 2. 查看监控信息:通过监控工具或日志,可以查看服务器的内存使用情况和线程数。根据引用中的描述,可以发现Tomcat线程数暴增直接占满。 3. 排查配置问题:根据引用中的解决方法,可以尝试调整相关的配置。比如,检查应用程序的配置文件中是否存在max-http-header-size这样的配置项,并尝试将其值适当调整。 4. 重新压测:在完成配置调整后,重新进行压测,观察是否还会出现OOM问题。如果问题得到解决,即可确认是配置问题导致的。 总结起来,解决Linux下使用JMeter进行压测时出现OOM问题的步骤包括:了解问题、查看监控信息、排查配置问题、重新压测。希望以上方法对您有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [一次压测下的OOM排查](https://blog.csdn.net/GuessBUG/article/details/113251642)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [压测遇到OOM录](https://blog.csdn.net/xiaoxie777/article/details/125290944)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值