服务器很卡,怎么排查——你缺的只是对排查工具的熟悉
分享一个以前工作碰到的案例,比较典型。
SSH上服务器后,卡的不得了,top发现 CPU占用率很高,ksoftirqd爆了:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
34 root 20 0 0 0 0 R 100.0 0.0 195:59.47 ksoftirqd/4
40 root 20 0 0 0 0 R 100.0 0.0 200:29.68 ksoftirqd/5
46 root 20 0 0 0 0 R 100.0 0.0 206:45.64 ksoftirqd/6
58 root 20 0 0 0 0 R 100.0 0.0 199:33.23 ksoftirqd/8
70 root 20 0 0 0 0 R 100.0 0.0 200:40.78 ksoftirqd/10
76 root 20 0 0 0 0 R 100.0 0.0 200:53.31 ksoftirqd/11
82 root 20 0 0 0 0 R 100.0 0.0 200:04.52 ksoftirqd/12
94 root 20 0 0 0 0 R 100.0 0.0 201:54.47 ksoftirqd/14
100 root 20 0 0 0 0 R 100.0 0.0 196:31.13 ksoftirqd/15
7 root 20 0 0 0 0 R 94.1 0.0 205:09.35 ksoftirqd/0
22 root 20 0 0 0 0 R 94.1 0.0 200:55.31 ksoftirqd/2
28 root 20 0 0 0 0 R 94.1 0.0 205:14.67 ksoftirqd/3
52 root 20 0 0 0 0 R 94.1 0.0 230:45.98 ksoftirqd/7
64 root 20 0 0 0 0 R 94.1 0.0 199:50.49 ksoftirqd/9
88 root 20 0 0 0 0 R 94.1 0.0 198:15.65 ksoftirqd/13
16 root 20 0 0 0 0 R 47.1 0.0 196:29.06 ksoftirqd/1
ksoftirqd是啥东西呢
中断是一种异步的事件处理机制,用来提高系统的并发处理能力。
中断事件发生,会触发执行中断处理程序,而中断处理程序被分为上半部和下半部这两个部分。
上半部对应硬中断,用来快速处理中断;
下半部对应软中断,用来异步处理上半部未完成的工作。