问题定位

  • 先判断范围

    • 系统性都卡:怀疑内核/磁盘/网络/电源/驱动/杀毒/索引器。
    • 单个程序卡:看系统资源使用情况。
  • 看系统资源

    • CPU、内存、磁盘 IO、网络 IO、GPU/NPU
  • 用 USE 方法(Utilization、Saturation、Errors)

    • 利用率:资源是否高占用
    • 饱和度:是否有排队(run queue、IO 队列、丢包/重传)
    • 错误:内核/驱动/磁盘错误、OOM、丢包、超时等

Linux 60 秒快速体检(常用)

  • uptime;看负载和开机时间是否刚启动(索引/更新会占用)
  • top/htop:看占用最高的进程,STATE 是否 D(IO 阻塞)/R(运行)/S(睡眠)
  • mpstat -P ALL 1;vmstat 1 5(si/so>0 表示在换页);iostat -xz 1(await、util%)
  • free -h;cat /proc/meminfo;cat /proc/pressure/{cpu,io,memory}(PSI 压力>20% 就很痛)
  • pidstat -rudwl 1(找 CPU/内存/IO/上下文切换/线程唤醒异常的进程)
  • ss -s;nstat;ping/mtr 目标;dig 域名(DNS 慢很常见)
  • dmesg -T | egrep -i ‘oom|throttl|error|fail|nvme|ata|ext4|xfs’(OOM/降频/磁盘/文件系统问题)
  • df -h;df -i(空间/ inode 用尽也会“假死”)
  • nvidia-smi(如有独显);sensors(温度/降频)

典型瓶颈与判断/修复

  1. CPU 饱和或被限频
  • 现象
    • top/htop 总 CPU 高且 run queue > 逻辑核数;mpstat 显示某核 100%
    • 在虚拟机/云上 %steal 高(宿主争用);或降频(thermal throttling)
  • 排查
    • mpstat -P ALL 1,看是否单核热点;perf top/record 找热点函数;pidstat -w 看上下文切换过多
    • dmesg 查“throttl/thermal”;cpupower frequency-info 看频率/调速策略
  • 对策
    • 修复热点(算法/并行/锁);把重任务绑定多核或提升并发
    • 避免 powersave,改 governor 为 performance;给云主机换更高基准频/独占核心
    • 容器/虚机查看 CPU 配额(cgroup CFS throttled),适当放宽
  1. 内存压力/交换(Swap)
  • 现象
    • free/ps_mem 显示空闲低且 vmstat si/so>0;PSI memory 高;应用抖动
    • dmesg OOM-killer 记录;页缓存被挤爆导致 IO 变多
  • 排查
    • smem/ps_mem.py 看进程按驻留内存排序;/proc/meminfo 的 Swap、Slab、PageTables
    • SAR -B(缺页/回收);pidstat -r;pmap -x PID(大页/映射)
  • 对策
    • 增内存或减少常驻进程;降低并发;为应用做内存上限与监控
    • 关闭或调小 swappiness(适度);开启 zram/zswap(低内存机有效)
    • JVM/DB 等调优堆和缓存;避免一次性加载巨量数据
  1. 磁盘/文件系统 IO 瓶颈(CPU/内存不高但很卡,最常见)
  • 现象
    • iostat util% 持续高、await 高;top 里大量 D 状态
    • 小文件海量读写、日志 fsync、杀毒/索引器扫盘
  • 排查
    • iostat -xz 1;pidstat -d 1 找 IO 最多的进程
    • 文件系统空间/ inode 是否满(df -h/df -i)
    • iotop -aoP 看累计 IO 大户;strace -f -tt -p PID 看卡在哪些调用(open/read/fsync/stat)
  • 对策
    • 换 SSD/更好的云盘;把热数据与日志分盘;加大队列深度
    • 批量/异步写,降低 fsync 频率;启用 noatime;合并小文件
    • 停用或限速杀毒/索引/备份对热目录的扫描
  1. 网络/DNS/代理
  • 现象
    • 应用外连慢、间歇卡顿;CPU/内存都不高
  • 排查
    • ping/mtr 目标;ss -s 看重传/拥塞;iftop/nethogs 看带宽/谁在占用
    • dig +trace 域名解析时延;检查 HTTP(S)_PROXY/NO_PROXY 是否错误
  • 对策
    • 固定/就近 DNS;修正代理与分流;排查 MTU/丢包;服务器端开 keepalive 与连接池
  1. 锁/竞争/线程调度
  • 现象
    • CPU 不高但响应慢;pidstat -w 上下文切换和自愿切换高
  • 排查
    • perf sched record / perf lock record;strace -cf -p PID 看 futex/semop
    • jcmd/jstack(JVM)看死锁/长 GC;py-spy/pprof/flamegraph 做火焰图
  • 对策
    • 降低共享资源争用;用无锁/细化锁;调整线程池大小避免过载
  1. 系统限制/资源泄漏
  • 现象
    • 新连接失败、打开文件失败、进程创建失败
  • 排查
    • ulimit -n/-u;sysctl fs.file-max;lsof | wc -l;inotify 实例/句柄是否耗尽
  • 对策
    • 合理调大限制,修复句柄/线程泄漏
  1. 容器/虚拟化特有
  • 容器 cgroup 限制
    • cat /sys/fs/cgroup//memory. 与 cpu.* 查看是否被限;读取 cpu.stat 的 throttled 时间
  • 虚拟机/云
    • mpstat 里的 %steal 高代表宿主竞争;换独占实例或降低邻居干扰
  • 存储驱动/共享目录
    • 大量 bind mount 或慢盘会拖慢应用(尤其 Docker Desktop/WSL2)
  1. 电源/温度/驱动
  • 现象
    • kernel_task 或系统进程占高,风扇大、频率降
  • 排查
    • sensors、powertop;dmesg 的 thermal;驱动错误日志
  • 对策
    • 清灰/散热;切 Performance 电源方案;更新驱动/固件

Windows/macOS 快速要点

  • Windows
    • 任务管理器/资源监视器;Process Explorer/ProcMon;性能监视器
    • Windows Update/Defender/索引器/OneDrive 同步常导致卡顿;powercfg /energy;磁盘优化
  • macOS
    • 活动监视器;fs_usage、iostat;Console 日志
    • Spotlight 索引、Time Machine、kernel_task 因温度/外接设备问题占用

常用一键观测组合(Linux)

  • dstat -tcmnd —top-cpu —top-io 1 或 glances/atop/netdata 先把痛点暴露出来
  • bcc/eBPF 工具箱(如 execsnoop, opensnoop, biolatency, tcpconnect, tcpretrans)快速锁定系统面

定位与反馈建议 请先做一轮基线测试并回帖关键输出(截取 10~20 行即可):

  • top/htop(前几名进程及状态)+ mpstat -P ALL 1 的 5 秒
  • vmstat 1 5 + iostat -xz 1 5 + free -h
  • df -h / df -i;cat /proc/pressure/*;dmesg -T 最近 200 行
  • 如在容器/虚拟机内,再贴 cgroup 配额(cpu.stat、memory.stat)或云厂商监控截图

根据这些就能快速判断是 CPU、内存、磁盘、网络、锁竞争、还是限频/限额问题,并给出更精确的优化方案。