java系统线上故障排查总结

发布时间:2022-07-02 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了java系统线上故障排查总结脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

线上故障主要会包括 CPU、磁盘、内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。

同时例如 jstack、jmap 等工具也是不囿于一个方面的问题的,基本上出问题就是 DF、free、top 三连,然后依次 jstack、jmap 伺候,具体问题具体分析即可。

1,CPU 

一般来讲我们首先会排查 CPU 方面的问题。CPU 异常往往还是比较好定位的。原因包括业务逻辑问题(死循环)、频繁 gc 以及上下文切换过多。而最常见的往往是业务逻辑(或者框架逻辑)导致的,可以使用 jstack 来分析对应的堆栈情况。

使用 jstack 分析 CPU 问题我们先用 ps 命令找到对应进程的 pid(如果你有好几个目标进程,可以先用 top 看一下哪个占用比较高)。

java系统线上故障排查总结

 

 

接着用top -H -p pid来找到 CPU 使用率比较高的一些线程

其中-p表示查找指定进程的信息,-H表示线程模式。

java系统线上故障排查总结

 

 

然后将占用最高的 pid 转换为 16 进制PRintf '%xn' pid得到 nid,

printf  '%xn' pid

或:

printf 0x%x pid

java系统线上故障排查总结

 

 接着直接在 jstack 中找到相应的堆栈信息jstack pid |grep 'nid' -C5 –color

jstack -l 11 |grep 0x255777

 

可以看到我们已经找到了 nid 为 0x42 的堆栈信息,接着只要仔细分析一番即可。

当然更常见的是我们对整个 jstack 文件进行分析,通常我们会比较关注 WaiTING 和 TIMED_WAITING 的部分,BLOCKED 就不用说了。我们可以使用命令cat jstack.LOG | grep "java.lang.Thread.state" | sort -nr | uniq -c来对 jstack 的状态有一个整体的把握,如果 WAITING 之类的特别多,那么多是有问题啦。

命令总结:

1,free -h2,ps -aux | sort -k4nr | head -n 103,top -Hp pid4.记录首个pid,转化成16进制后的数字,可通过计算器(calc)或 printf %x 26461 675D进入 jdk/bin5, 导出./jstack -l pid > pid.log

 

脚本宝典总结

以上是脚本宝典为你收集整理的java系统线上故障排查总结全部内容,希望文章能够帮你解决java系统线上故障排查总结所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。