性能问题先分层,不要一上来就 top 然后猜。按“负载 → CPU → 内存 → 磁盘 → 网络 → 内核/应用”的顺序缩小范围,每一层用最小成本的命令确认或排除。USE 方法(Utilization、Saturation、Errors)适合逐项检查资源。
先确认三件事:问题是持续还是偶发、影响单机还是全局、最近有没有发布/配置/流量变化。
uptime 看 1/5/15 分钟负载趋势。vmstat 1 看 r、b、si、so、wa。pidstat 1 看进程级 CPU、内存和 IO。top -H 找高 CPU 线程。mpstat -P ALL 1 看是否单核打满。perf top 看热点函数。cpu.stat 的 throttled)。free -m 看 available 而不是 free。vmstat 的 si/so 是否持续非零。smem/ps 按 RSS/PSS 排序。dmesg 查 OOM Killer 记录。df -h、df -i 检查空间和 inode。iostat -xz 1 看 %util、await、aqu-sz。iotop -o 找高 IO 进程。pidstat -d 1 看进程读写。dmesg 查磁盘错误和文件系统只读。ss -s 看连接数和 socket 状态。ss -lntp 确认监听端口。sar -n DEV 1 看带宽和丢包。tcpdump/tshark 抓包确认重传和 RST。conntrack -S 看连接跟踪表是否满。dmesg -T 查软锁、hung task、OOM。cat /proc/pressure/* 看 PSI 压力。bpftrace/perf 做内核态追踪。ulimit -n、somaxconn、tcp_max_syn_backlog。free 很小就认为内存不足,忽略 page cache 可回收。%util 100% 就认定磁盘瓶颈,NVMe/云盘的 %util 语义不同。top 的 CPU 百分比判断容器限流,应该看 cgroup cpu.stat。