Java线上故障排查方案
E:\2020\Java线上故障排查方案.pdf
一、定位问题
1.业务日志分析
2.物理环境分析排查
CPU、
CPU使⽤率是衡量系统繁忙程度的重要指标。但是CPU使⽤率的安全阈值是相对的,取决于你的系统的 IO密集型还是计算密集型。⼀般计算密集型应⽤CPU使⽤率偏⾼load偏低,IO密集型相反。
top命令是Linux下常⽤的 CPU 性能分析⼯具,能够实时显示系统中各个进程的资源占⽤状况,常⽤于服务端性能分析。
top
top 命令显示了各个进程 CPU 使⽤情况,⼀般 CPU 使⽤率从⾼到低排序展示输出。其中 Load Average 显示最近1分钟、5分钟和15分钟的系统平均负载,上图各值为3.4、3.31、3.46。
我们⼀般会关注 CPU 使⽤率最⾼的进程,正常情况下就是我们的应⽤主进程。第七⾏以下:各进 程的状态监控,参数说明:
PID : 进程id
USER : 进程所有者的⽤户名 PR : 进程优先级
PR : 进程优先级
NI : nice值。负值表示⾼优先级,正值表示低优先级
VIRT : 进程使⽤的虚拟内存总量,单位kb
SHR : 共享内存⼤⼩
%CPU : 上次更新到现在的CPU时间占⽤百分⽐
%MEM : 进程使⽤的物理内存百分⽐
TIME+ : 进程使⽤的CPU时间总计,单位1/100秒
COMMAND : 命令名称、命令⾏
内存、
内存是排查线上问题的重要参考依据,free 是显示的当前内存的使⽤,-h 表示⼈类可读性。
free -m
参数说明:
total :内存总数
used:已经使⽤的内存数
free:空闲的内存数
shared:被共享使⽤的物理内存⼤⼩
buffers/buffer:被 buffer 和 cache 使⽤的物理内存⼤⼩
available: 还可以被应⽤程序使⽤的物理内存⼤⼩
磁盘、
磁盘满了很多时候会引发系统服务不可⽤等问题
df-h 、 iostat、 lsof 等命令查看磁盘IO情况,找到读写异常的进程
网络、
dstat 是⼀个可以取代vmstat,iostat,netstat和ifstat这些命令的多功能产品。
使用dstat、vmstat等命令查看网络流量、TCP连接等情况,分析异常流量
默认情况下,dstat每秒都会刷新数据。需要注意的是报告的第⼀⾏,由于dstat会通过上⼀次的报 告来给出⼀个总结,所以第⼀次运⾏时是没有平均值和总值的相关数据。
默认输出解释:
CPU状态:显示了⽤户,系统和空闲部分,便于分析CPU当前的使⽤状况
磁盘统计:磁盘的读写操作,显示磁盘的读、写总数。
⽹络统计:⽹络设备发送和接受的数据,显示了⽹络收、发数据总数。
分⻚统计:系统的分⻚活动。
系统统计:这⼀项显示的是中断(int)和上下⽂切换(csw)。
3.应用服务排查
java jstack、jmap/ jvisualvm 或者MAT 或者借助阿里的Arthas
jstack、定位进程、线程 定位到代码
Jprofile 分析进程、线程耗时占比,耗时瓶颈点 定位到具体代码反推问题原因

浙公网安备 33010602011771号