问题定位
-
先判断范围
- 系统性都卡:怀疑内核/磁盘/网络/电源/驱动/杀毒/索引器。
- 单个程序卡:看系统资源使用情况。
-
看系统资源
- 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(温度/降频)
典型瓶颈与判断/修复
- 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),适当放宽
- 内存压力/交换(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 等调优堆和缓存;避免一次性加载巨量数据
- 磁盘/文件系统 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;合并小文件
- 停用或限速杀毒/索引/备份对热目录的扫描
- 网络/DNS/代理
- 现象
- 应用外连慢、间歇卡顿;CPU/内存都不高
- 排查
- ping/mtr 目标;ss -s 看重传/拥塞;iftop/nethogs 看带宽/谁在占用
- dig +trace 域名解析时延;检查 HTTP(S)_PROXY/NO_PROXY 是否错误
- 对策
- 固定/就近 DNS;修正代理与分流;排查 MTU/丢包;服务器端开 keepalive 与连接池
- 锁/竞争/线程调度
- 现象
- CPU 不高但响应慢;pidstat -w 上下文切换和自愿切换高
- 排查
- perf sched record / perf lock record;strace -cf -p PID 看 futex/semop
- jcmd/jstack(JVM)看死锁/长 GC;py-spy/pprof/flamegraph 做火焰图
- 对策
- 降低共享资源争用;用无锁/细化锁;调整线程池大小避免过载
- 系统限制/资源泄漏
- 现象
- 新连接失败、打开文件失败、进程创建失败
- 排查
- ulimit -n/-u;sysctl fs.file-max;lsof | wc -l;inotify 实例/句柄是否耗尽
- 对策
- 合理调大限制,修复句柄/线程泄漏
- 容器/虚拟化特有
- 容器 cgroup 限制
- cat /sys/fs/cgroup//memory. 与 cpu.* 查看是否被限;读取 cpu.stat 的 throttled 时间
- 虚拟机/云
- mpstat 里的 %steal 高代表宿主竞争;换独占实例或降低邻居干扰
- 存储驱动/共享目录
- 大量 bind mount 或慢盘会拖慢应用(尤其 Docker Desktop/WSL2)
- 电源/温度/驱动
- 现象
- 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、内存、磁盘、网络、锁竞争、还是限频/限额问题,并给出更精确的优化方案。