top
命令查看CPU占比,发现服务占据的CPU接近100%,即基本占据了一整个核心top -c
命令可以看到更完整的信息,输入大写P,top的输出会按使用cpu多少排序,此时我们可以看到进程的PID- 命令:top -Hp 进程号。 同样输入大写P,top的输出会按使用cpu多少排序。由此可以找到耗CPU的线程
- 输入pstack 进程号,并搜索线程号对应的堆栈,可以用来帮助排查问题
如果整个系统的各个服务CPU占比都比正常情况高,这时候要使用vmstat命令 输入vmstat 2
2是指2秒会统计一次CPU信息
root@ubuntu:~# vmstat 2
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 0 3499840 315836 3819660 0 0 0 1 2 0 0 0 100 0
0 0 0 3499584 315836 3819660 0 0 0 0 88 158 0 0 100 0
0 0 0 3499708 315836 3819660 0 0 0 2 86 162 0 0 100 0
0 0 0 3499708 315836 3819660 0 0 0 10 81 151 0 0 100 0
1 0 0 3499732 315836 3819660 0 0 0 2 83 154 0 0 100 0
关注几个指标:
r : 运行队列,当这个值超过CPU数目,就会出现CPU瓶颈了
b:表示阻塞sleep的进程
in:每秒产生的中断数,包括系统时钟
cs:上下文切换的次数