Linux命令——性能监控
top、iotop、vmstat、mpstat、iftop1. top作用执行输出详细解读第 1 行系统概况第 2 行任务统计第 3 行CPU 总体非常重要第 4–5 行内存与交换分区进程区域字段常用交互2. iotop作用执行输出解读典型判断3. vmstat作用执行输出字段详解瓶颈判断4. mpstat作用执行输出解读典型场景5. iftop你说的 iptime作用执行界面解读用途最终一张表总结面试必背1. top作用实时查看系统整体负载、CPU、内存、进程排名。执行top输出详细解读第 1 行系统概况top - 15:32:15 up 12 days, 2:15, 2 users, load average: 0.35, 0.42, 0.4715:32:15当前时间up 12 days运行时长2 users登录用户数load average: 1,5,15分钟平均负载单核 CPU负载 1 正常4 核负载 4 正常持续高于核心数 → CPU 繁忙第 2 行任务统计Tasks: 123 total, 1 running, 122 sleeping, 0 stopped, 0 zombiezombie僵尸进程数量0 需处理第 3 行CPU 总体非常重要%Cpu(s): 3.2 us, 1.1 sy, 0.0 ni, 95.3 id, 0.4 wa, 0.0 hi, 0.0 si, 0.0 stus用户态 CPU应用程序sy内核态 CPU系统调用id空闲 CPU越高越闲wa等待磁盘 I/O高磁盘瓶颈hi/si硬中断/软中断高网络/驱动密集st虚拟机被抢占时间云服务器关注第 4–5 行内存与交换分区KiB Mem : 3880796 total, 254572 free, 2654328 used, 971896 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 988644 avail Memused已用内存buff/cache缓存可回收avail Mem实际可用内存进程区域字段PID USER PR NI VIRT RES SHR S %CPU %MEM TIME COMMANDPID进程IDRES物理内存%CPUCPU 占用%MEM内存占用S进程状态R 运行S 睡眠D IO 阻塞Z 僵尸COMMAND命令常用交互P按 CPU 排序M按内存排序1显示每个 CPU 核心k杀进程q退出2. iotop作用查看哪个进程在疯狂读写磁盘。执行iotop iotop-o# 只看有IO的进程输出解读Total DISK READ : 0.00 B/s | Total DISK WRITE : 1452.32 K/s Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 512.45 K/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO COMMAND 1234 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.01 % nginxTotal DISK READ/WRITE总读写速度Actual DISK实际物理磁盘 IOTID线程 IDDISK READ/DISK WRITE该进程读写速度IO进程等待 IO 的百分比高该进程卡 IO典型判断IO列很高 → 该进程是磁盘瓶颈整体 wa 高 → 用 iotop 定位3. vmstat作用查看系统整体瓶颈CPU / 内存 / swap / 磁盘 IO / 上下文切换。执行vmstat13# 每秒1次共3次vmstat1输出字段详解r b swpd free buff cache si so bi bo in cs us sy id wa str等待运行的进程数CPU 核心数 → CPU 忙b阻塞等待 IO 的进程数0 可能 IO 瓶颈swpd使用的 swapfree空闲内存si/soswap 读/写持续 0 → 内存不足正在换入换出bi/bo从磁盘读/写块越高磁盘越忙in中断数cs上下文切换过高进程太多us sy id wa同 top瓶颈判断r 高 → CPU 瓶颈b 高 wa 高 → IO 瓶颈si/so 频繁 → 内存瓶颈4. mpstat作用查看每个 CPU 核心的使用率排查单核跑满。执行mpstat mpstat-PALL12# 查看所有核心每秒1次输出解读CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle all 3.2 0.0 1.1 0.4 0.0 0.0 0.0 0.0 0.0 95.3 0 2.9 0.0 1.0 0.3 0.0 0.0 0.0 0.0 0.0 95.8 1 3.5 0.0 1.2 0.5 0.0 0.0 0.0 0.0 0.0 94.8CPU核心编号%usr用户态%sys内核态%iowaitIO 等待%idle空闲典型场景某个核心 %idle 极低 → 该核心跑满Java/Nginx 经常出现单核心满载5. iftop你说的 iptime作用查看网络带宽、哪台 IP 在占流量。执行iftop iftop-ieth0界面解读顶部interface: eth0 IP address is 10.0.0.10中间区域10.0.0.10 10.0.0.11 1.22Mb 2.31Mb 3.12Mb 345kb 512kb 627kb出口流量入口流量三列2s、10s、40s 平均速度底部TX: cumm: 3.21MB peak: 4.31Mb rates: 2.11Mb 3.22Mb 4.11Mb RX: 1.45MB 1.92Mb 892kb 1.01Mb 1.22MbTX发送流量RX接收流量用途带宽跑满、服务器外网卡 → 用 iftop 定位哪个 IP 在狂传数据最终一张表总结面试必背命令核心用途关键看什么top整体负载进程load、id、wa、%CPU、%MEMiotop磁盘IO瓶颈DISK WRITE、IO%vmstat系统整体健康r、b、si/so、bi/bo、wampstatCPU 多核分析每个核心 %idle、%usriftop网络带宽外部IP、流量大小、内外向速度