通过jstack与jmap分析一次线上故障

有一次线上发现一个很奇怪的事情,有一个应用是2台负载均衡处理, 但是一台机器cpu飙高的 800%多,另一台很正常.


机器A正常

机器B异常
简单分析了一下问题,可能存在的问题有:

1.系统本身代码问题
2.上游系统调用量飙高
3.分布式锁
4.机器本身问题

解决办法

1.top查看当前jboss应用的pid进程号
2.查看改pid进程下对应的进程的线程信息, 下图发现有13个线程分别占用了60%多的cpu,很奇怪


高占用进程的线程信息

3.把几个pid转换为16进制,用jstack命令看下线程是做什么的,返现都是gc线程,如图:


有问题线程

为什么会出现如此多的gc线程呢,我们查看下当前java堆中的对象数量和大小
jmap -histo:live 27839 |head -30
图片.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容