arthas 排查内存溢出_arthas 进行内存溢出分析

有做过测试的同学,应该或多或少都见过 OOM 的错误吧

8b4442226458018998bcfabd4ae9e67f.png

这种错误日志见过吗?相信很多人,都很熟悉,老朋友了。

但是,这种问题,我们怎么才能准确定位到问题根源呢?

很多测试朋友可能就望而却步了,说这是开发人员的事情,让开发人员去排查好了。你如果是初、中级测试工程师,你可以这样说,但是,如果你是高级测试工程师,你是性能测试工程师,那,恐怕就是你不负责任了。

当你深入学习了之后,你可能发现 jvm 自带的 jmap 可以查看这种内存溢出问题,但是,当你真正去用的时候,你又会发现,你想用一个 jmap 来抓取内存溢出的包,估计你得等到海枯石烂,天荒地老,时间非常长,而一旦中间中断,你这次抓包就失败了。

今天给大家介绍一个神器——arthas,它是阿里开源的一款 jvm 分析工具。

现在我有个项目,就有内存溢出问题

首先,启动项目,再启动 arthas,查看到这个项目堆使用率约 26%

905e10af1b65944fc231b6020464cfcf.gif

接下来,我们用 jmeter 调用这个项目的接口,进行性能测试,发现马上就出现了“Handler processing failed; nested exception is java.lang.OutOfMemoryError: Java heap space” 错误。

这时候,我们从 arthas 中,可以看到该项目的堆使用率瞬速达到 83% 以上

6aee4a05f29d907b2d920e606052b0b0.gif

出现这样的情况,肯定就是出现了 OOM 问题了,此时,我们只需要按一下'q'键, 然后输入’heapdump‘ 回车

就会看到正在生成一个 hprof 文件,稍等 1 分钟左右,就生成结束,就可以去 Tomcat 的 temp 路径下查找这个文件

f73cff91cebbafda6b5fbc166194b82f.png

把文件下载下来,然后用 MAT 工具打开

df2ec2d5094c9974991a15eb197f857e.gif

这里就详细地看到了具体的类,你可以把这个 hprof 文件给开发,或者把这个定位到具体类的截图给开发,接下来,就真正式开发忙活的时候了。

是不是 忒简单了,你掌握了吗?

本文作者:柠檬班软件测试(lemonban)——专注于最新最前沿的软件测试技术,解决你的测试技术烦恼,对软件测试感兴趣的朋友赶快关注我们吧!

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值