java进程老挂掉_Java进程突然挂掉排查分析手记(jvm bug)

本文记录了一次系统业务Java进程挂掉的排查过程。通过检查系统资源、排除OOM机制、分析应用程序日志以及JVM错误日志,最终确定问题可能由JVM的bug引起,表现为在执行JNI代码时崩溃。
摘要由CSDN通过智能技术生成

故障:11.56 Zabbix收到告警,系统业务一个java进程挂了,今日正好值班遇到,做个分析手记,可以供大家参考。

排查1:查看系统资源情况

6468699e6385d12913ba309405545ed1.png

主要发现此刻CPU均突然增长,swap内存也有所增长但是并非资源耗尽的情况。此刻想到了Linux进行OOM-killer机制。

排查2:查核系统内核是否触发oom机制。

日志:/var/log/message --一般oom信息这里会找到,但是排查没有相关kill和内存信息。参考命令dmesg

了解:https://www.oracle.com/technetwork/articles/servers-storage-dev/oom-killer-1911807.html

排查3:java应用程序触发的oom

这个找了应用本身的log,发现并没有“java.lang.OutOfMemoryError: Java heap space”等信息

可查看JVM参数 -XX:+HeapDumpOnOutOfMemoryError 和 -XX:HeapDumpPath及是否产生相关dump,如果有则可

https://blog.51cto.com/renzhiyuan/2288355 之前分享的工具分析。 --本次查核没有,则继续分析。

排查4:JVM的bug导致

当jvm出现致命错误时,会生成一个错误文件 hs_err_pid.log。

参考:https://my.oschina.net/xionghui/blog/498785

重要信息:“SIGSEGV(0xb)”表示jvm crash时正在执行jni代码,而不是在执行java或者jvm的代码,如果没有在应用程序里手动调用jni代码,那么很可能是JIT动态编译时导致的该错误。其中SIGSEGV是信号名称,0xb是信号码,pc=0x00007fb8b18fdc6c指的是程序计数器的值,pid=191899是进程号,tid=140417770411776是线程号。

d57307cab0b7e876862209b11cb4919e.png

af12faa1af01c1428630feff4d826eb7.png

于是~基本确认是bug问题~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值