JAVA 线上故障排查完整套路,mybatis日志输出原理

本文详细介绍了JAVA线上故障排查的方法,涉及CPU上下文切换、磁盘性能分析、内存问题(包括OOM、GC、堆外内存)以及网络问题的诊断,提供了一系列命令行工具如pidstat、iotop、jstat、jmap等的使用,帮助开发者定位和解决各类问题。
摘要由CSDN通过智能技术生成

JAVA 线上故障排查完整套路

cs(context switch)一列则代表了上下文切换的次数。

如果我们希望对特定的 pid 进行监控那么可以使用 pidstat -w pid命令,cswch 和 nvcswch 表示自愿及非自愿切换。

JAVA 线上故障排查完整套路

磁盘

==

磁盘问题和 CPU 一样是属于比较基础的。首先是磁盘空间方面,我们直接使用df -hl来查看文件系统状态

JAVA 线上故障排查完整套路

更多时候,磁盘问题还是性能上的问题。我们可以通过 iostatiostat -d -k -x来进行分析

JAVA 线上故障排查完整套路

最后一列%util可以看到每块磁盘写入的程度,而rrqpm/s以及wrqm/s分别表示读写速度,一般就能帮助定位到具体哪块磁盘出现问题了。

另外我们还需要知道是哪个进程在进行读写,一般来说开发自己心里有数,或者用 iotop 命令来进行定位文件读写的来源。

JAVA 线上故障排查完整套路

不过这边拿到的是 tid,我们要转换成 pid,可以通过 readlink 来找到 pidreadlink -f /proc/*/task/tid/…/…。

JAVA 线上故障排查完整套路

找到 pid 之后就可以看这个进程具体的读写情况cat /proc/pid/io

JAVA 线上故障排查完整套路

我们还可以通过 lsof 命令来确定具体的文件读写情况lsof -p pid

JAVA 线上故障排查完整套路

内存

======

内存问题排查起来相对比 CPU 麻烦一些,场景也比较多。主要包括 OOM、GC 问题和堆外内存。一般来讲,我们会先用free命令先来检查一发内存的各种情况。

JAVA 线上故障排查完整套路

堆内内存

内存问题大多还都是堆内内存问题。表象上主要分为 OOM 和 Stack Overflo。

OOM

JMV 中的内存不足,OOM 大致可以分为以下几种:

Exception in thread “main” java.lang.OutOfMemoryError: unable to create new native thread

这个意思是没有足够的内存空间给线程分配 Java 栈,基本上还是线程池代码写的有问题&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值