Java线上故障排查
线上故障主要会包括cpu、磁盘、内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。
CPU
CPU异常往往还是比较好定位的。原因包括业务逻辑问题(死循环)、频繁gc以及上下文切换过多。而最常见的往往是业务逻辑(或者框架逻辑)导致的,可以使用jstack来分析对应的堆栈情况。
使用jstack分析cpu问题
在线上环境可以使用jps
命令查看运行中的Java程序的进程id,然后使用命令top -H -p pid
查看该进程占用率高的线程。
然后将暂用最高的pid转成16进制的nid(本机线程id)printf '%x\n' pid
使用jstack命令找到堆栈信息,jstack pid |grep nid -C5
这样就能找到问题代码。
频繁gc问题
使用命令jstat -gc pid 1000
查看gc分代的变化情况,
磁盘
内存
网络
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 张国丰!
评论