Linux 进阶 L20:性能排查三板斧——top、vmstat、iostat
服务器变慢了,别慌。三板斧下去,瓶颈在哪一目了然。
第一板斧:top——谁在吃资源
top
top - 00:12:34 up 13 days, 3:38, 1 user, load average: 0.00, 0.00, 0.00
%Cpu(s): 0.3 us, 0.2 sy, 0.0 ni, 99.5 id
MiB Mem : 939.4 total, 86.2 free, 771.3 used, 168.1 avail
PID USER %CPU %MEM COMMAND
769443 root 0.5 40.3 java
看三处:load average(1/5/15 分钟平均负载,单核超 1.0 算忙)、%Cpu 行的 id(空闲,长期低于 20% 就是 CPU 瓶颈)、%MEM 列(谁吃内存最多)。
top 里按 P 按 CPU 排序,按 M 按内存排序,按 q 退出。
第二板斧:vmstat——系统全局体检
vmstat 1 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 0 88332 15234 204567 0 0 2 5 89 156 0 0 99 0
关键列:r(等待 CPU 的进程数,长期大于核数则 CPU 不够)、si/so(swap 换入换出,非 0 说明内存不够)、wa(CPU 等 IO,长期偏高则磁盘是瓶颈)。
第三板斧:iostat——磁盘是不是拖后腿
iostat -x 1 3
Device %util await avgqu-sz
nvme0n1 2.10 1.20 0.02
%util(磁盘忙碌度,长期近 100% 则扛不住)、await(平均等待毫秒)、avgqu-sz(排队长度)。
实战:博客变慢了怎么查
top # 1. 先看谁吃 CPU/内存
vmstat 1 5 # 2. si/so 是否为 0,wa 高不高
iostat -x 1 # 3. %util 确认磁盘
free -h # 4. 内存还剩多少
排查口诀
先 top 看进程,再 vmstat 看全局,si so 不为零加内存别犹豫,wa 高看 iostat,util 满了换 SSD。
小结
三板斧抡熟了,服务器慢的第一反应不再是"重启试试",而是"数据说话"。