← 返回图谱目录

排障速查 · v1.2 · 12 个模块

Linux 实战监控排障调优综合图

沿请求链建立证据,把监控、排障、恢复、调优和验证串成闭环。

下载 SVG 原图
1.0×
点击框内区域,展开模块说明拖动平移 · 滚轮 / 双指缩放

读图提示

看指标,也看现场。

命令中的 PID、SERVICE、IFACE 等占位符需替换为实际值。图中的分隔符用于列出独立检查项;复制按钮已按单条命令整理。结合业务影响、基线和时间窗口判断。

图谱署名:老男孩教育-李导996 · v1.2 · 2026-10-22

来源与参考

按图内已有来源整理。模块文字与命令来自本图,未添加新的教学案例。

下载原始 SVG,保留完整署名与说明 ↗
展开全部模块文字版

监控、排障与验证流程

发现影响 → 缩小范围 → 形成证据 → 恢复与调优 → 验证闭环。

判断依据

  • 发现影响:成功率、P95/P99、流量。
  • 缩小范围:时间、节点、接口、变更。
  • 形成证据:基线 + 日志 + 指标 + 抓包。

注意事项

  • 先止损;每次修改一个变量。
  • 同负载复测;持续观察并回退。
  • URL / PID / IFACE / CT / POD / NS 须替换。PSI 需内核支持;跟踪按需限范围。

请求路径与监控落点

从用户可见现象出发,分别验证 DNS、TLS 与依赖服务。

判断依据

  • 请求路径:客户端/域名解析 → 内容分发/应用防火墙/负载均衡 → Nginx/网关 → 应用接口/进程 → 缓存 Redis、数据库 MySQL/PostgreSQL。
  • 监控落点:blackbox_exporter + 应用指标 + 日志/调用链;node_exporter + Prometheus/Grafana(或 Zabbix)

01 业务入口与访问链路

监控可用率、DNS/TLS 耗时、HTTP 错误率、P95/P99。

命令

getent ahosts app.example.com
curl -v --connect-timeout 3 --max-time 10 URL
curl --resolve app.example.com:443:10.0.0.20 URL

判断依据

  • 超时、拒绝连接、证书失败、HTTP 5xx 分开判定;
  • 浏览器 F12:网络 / 耗时 / 控制台
  • 对比不同客户端 / 节点;纠正 DNS、证书或入口路由。

注意事项

  • --resolve 须匹配 URL 域名端口;保留 Host / SNI。

02 应用、进程与依赖

监控请求时延、5xx、线程/连接池、GC、慢 SQL。

命令

systemctl status nginx --no-pager
journalctl -u nginx --since "10 min ago"
nginx -t
nginx -T
ss -lntp
tail -n 100 /var/log/nginx/error.log
perf top -p PID
strace -p PID -tt -T

判断依据

  • 502 结合 error.log 与上游直连结果;
  • 按证据修复配置、上游或代码;连接池扩容须验证依赖。

注意事项

  • perf 与 strace 按需深入;strace 短时执行。

03 CPU 与调度

监控各核 us/sy/steal、运行队列、CPU PSI 与限额节流。

命令

uptime
mpstat -P ALL 1 5
pidstat -u -w 1 5
top -H -p PID
vmstat 1 5
cat /proc/pressure/cpu

判断依据

  • 区分单核热点、全机繁忙、宿主机争用、cgroup 限额;
  • 分析热点与锁;优化并发;按基线核查 CPU 资源限额。

注意事项

  • 系统负载高也可能来自不可中断睡眠任务。

04 内存与虚拟内存

监控 MemAvailable、RSS、交换区换入换出、OOM、内存 PSI。

命令

free -h
vmstat 1 5
pidstat -r 1 5
ps aux --sort=-rss
cat /proc/pressure/memory
journalctl -k --since "10 min ago"

判断依据

  • 结合 available、si/so 与 PSI;OOM 要区分主机整体与容器/服务限额。
  • 定位泄漏、缓存或大查询;修复后再调整内存限额。

注意事项

  • 低 free 不等于内存不足。

05 文件系统、块设备与磁盘

监控空间/inode、IOPS/吞吐、await、队列、I/O PSI。

命令

df -hT
df -i
lsblk -f
iostat -xz -y 1 5
pidstat -d 1 5
lsof +L1
cat /proc/pressure/io

判断依据

  • 区分空间满、inode 满、删文件未释放和 I/O 延迟;
  • 按责任清理/轮转并释放占用;优化 I/O 或扩容。

注意事项

  • SSD/RAID 不能仅靠 %util 判断是否饱和。

06 网络协议栈与网卡

监控带宽、丢包/错误、RTT、TCP 重传、连接/监听队列。

命令

ip -br a
ip route get 10.0.0.20
ip neigh
ping -c 4 10.0.0.20
nc -vz -w 3 10.0.0.20 443
ss -s
ss -tin
ip -s link
ethtool -S IFACE

判断依据

  • 核查路由、防火墙/安全组、监听和重传;按证据修复。

注意事项

  • 需要时双端 tcpdump;先限报文数量与采样范围;
  • ping 不通不能证明 TCP 不通,mtr 中间跳丢包需复核。

系统组成与证据落点

按应用、系统调用、内核子系统、驱动和硬件逐层观察。

判断依据

  • 资源统一看 USE:利用率 U;饱和度 S(排队/等待);错误 E。
  • 结合业务基线与持续时间。
  • 内核子系统并列观察:调度器/CPU、虚拟内存/物理内存、虚拟文件系统/块层/磁盘、套接字/TCP/IP/网卡。

注意事项

  • 驱动 / 硬件 / 云资源同时考虑宿主机配额与底层限制。

容器与 K8s 补充

核查容器状态、日志、目标资源组与实际限额。

命令

docker stats --no-stream
docker logs --tail 100 CT
docker inspect CT
kubectl top pod -n NS
kubectl describe pod POD -n NS
kubectl logs POD -n NS --tail=100
kubectl logs POD -n NS --previous

判断依据

  • 目标 cgroup v2:cpu.stat / cpu.max、memory.events / memory.max、io.stat。

注意事项

  • 主机空闲不代表容器有配额。
  • 重启排查使用 --previous;多容器加 -c CONTAINER;top 需 Metrics Server。

第一轮快查与保留现场

先保留现场,再决定深入方向。

命令

uptime
vmstat 1 5
free -h
df -hT
ss -s

判断依据

  • 确认时间、影响范围、最近发布;复现同一个请求。
  • 选择对应分支查日志、进程、队列;保留时间戳。
  • 判定:基线 + 持续时间 + 业务影响;不设统一“80%异常”。

注意事项

  • 时间敏感故障先按预案回滚/切流;随后验证和复盘。

网站打不开:按证据分支

同为“网站打不开”,证据决定排查分支。

判断依据

  • 连接拒绝 → 核查监听地址、端口与防火墙 REJECT。
  • 连接超时 → 检查路由、安全组与双端报文。
  • 收到 502 → 查 Nginx error.log,再直连 上游服务。
  • 修复后:同客户端 / 域名 / 接口复测,并观察错误率与时延。

注意事项

  • 原图课堂训练:先示范 → 遮图复述 → 换故障独立排查 → 后续复测。