Load高问题排查

一、cpu层面进行排查

1. 首先排查哪些进程cpu占用率高。 通过top -c命令显示进程运行信息列表 (按键P按CPU占有资源排序)

执行:

jstack 88148 > loop.txt

 2.  查看对应java进程的每个线程的CPU占用率。通过命令:top -Hp 88148

 

查看到PID为23772,23773和23774的线程占用CPU较高,

这里可能有人有疑惑,为什么线程也有PID啊?其实线程进程都会有自己的ID,这个ID就叫做PID,PID是不特指进程ID,线程ID也可以叫做PID

3.  追踪线程内部,查看load过高原因。将10进制的23772转为16进制,因为jstack中PID用的是16进制

printf "%x" 23772
输出5cdc

4.  打开loop.txt文件,搜5cdc

二、查看运行中的队列R,不可中断的睡眠进程D

linux内的进程状态:五种

Linux进程状态:R (TASK_RUNNING),RUNNABLE 可执行状态。
Linux进程状态:S (TASK_INTERRUPTIBLE),可中断的睡眠状态。
Linux进程状态:D (TASK_UNINTERRUPTIBLE),不可中断的睡眠状态。
Linux进程状态:T (TASK_STOPPED or TASK_TRACED),暂停状态或跟踪状态。
Linux进程状态:Z (TASK_DEAD - EXIT_ZOMBIE),退出状态,进程成为僵尸进程

系统有很高的负载但是CPU使用率却很低,或者负载很低而CPU利用率很高,这两者没有直接关系,

在 load 比较高的时候,有大量的 nginx 处于 R 或者 D 状态,他们才是造成 load 上 升的元凶

2、排查僵尸进程步骤:

1):执行top命令,查看zombie进程

2) :ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' 、、查找进程状态为Z的进程

三、OS 系统层面 检查系统IO

执行iostat

 

avg-cpu段:
%user:   在用户级别运行所使用的CPU的百分比.
%nice:   nice操作所使用的CPU的百分比.
%sys:    在系统级别(kernel)运行所使用CPU的百分比.
%iowait: CPU等待硬件I/O时,所占用CPU百分比.
%idle:   CPU空闲时间的百分比.
posted @ 2020-11-13 15:52  南昌拌粉的成长  阅读(705)  评论(0编辑  收藏  举报