使用jvisualvm工具进行OOM问题排查和调优。

1.业务场景介绍:

使用Springboot项目进行activityMQ的接入。把消息分发到另外两个地方:rocketMQ和DataHub。实现数据的传输。并保证数据的一致性。

2.问题介绍

代码写完。运行后。发现没过多久项目就报错。java.lang.OutOfMemoryError: unable to create new native thread

3.问题排查

使用工具jvisualvm进行排查.工具是安装jdk后自带的。

我的Mac路径是在/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/bin/jvisualvm

找不到可以用find命令进行查询:find / -name jvisualvm

双击启动后的页面如下。

然后找到需要排查的本地项目进程。open it.

从上图可以看到问题有哪些?

a.cpu占用比较高。一直不停的在使用cpu资源。40%到55%左右。

b.使用的内存也很好。jvm回收不过来。

c.线程数量也在不断增加。开始1000多到2000+。这是很不合理的。

4.优化结果

这样我们就可以看到是多线程的问题引起的。经过一两个小时的优化。具体代码不好展示。😄我们来看看优化后的monitor监控情况如何:

 

对比不难看出来。优化的结果还是很棒的。已经达到了我们想要的效果。

a.cpu也不会占用太高。

b.也没有报java.lang.OutOfMemoryError: unable to create new native thread异常了。

c.线程数量也是比较小的数量。稳定在一个水平下。

5.排查工具jvisualvm的其他功能分享

查看jvm 的参数

也可以看线程查问题原因。

当然还可以打heap dump 和Thread dump.用来分析dump文件来定位问题的原因。

最后感谢大家的支持。希望能帮助到大家。。

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JavinLu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值