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 分析进程、线程耗时占比,耗时瓶颈点   定位到具体代码反推问题原因   

4.云厂商或运营商问题排查

posted @ 2021-06-22 23:02  BigShen  阅读(2)  评论(0)    收藏  举报