性能观测与故障定位
操作系统排障需要证据链。CPU、内存、磁盘、网络、进程、系统调用、日志和时间线共同构成定位依据。
# 1. 学习目标
- 建立系统性能排查的统一方法论。
- 能区分资源瓶颈、配置问题、代码问题和外部依赖问题。
- 掌握常见观测工具的使用边界。
# 2. 知识框架
性能观测与故障定位
├─ 入门:建立术语、对象和日常操作的直觉
├─ 进阶:理解机制、边界和跨平台差异
└─ 专家:能排障、能设计、能阅读实现和研究材料
性能定位顺序建议:确认影响面 -> 建时间线 -> 看资源四件套 -> 找异常进程 -> 深入系统调用或应用栈 -> 验证假设。
# 3. 核心概念
| 主题 | 说明 | 工程关注 |
|---|---|---|
| 指标 | CPU、内存、IO、网络、队列、错误率等数值信号 | 趋势、阈值、基线 |
| 日志 | 系统和应用记录的事件文本 | 时间线、错误上下文 |
| Trace | 请求跨组件的调用链 | 定位慢在哪一段 |
| 采样 | 按频率记录运行时状态 | 低侵入获取热点 |
# 4. 机制与实践
- 先问“什么时候开始、影响哪些机器、是否有变更”,再动手调参。
- 排查过程中保留命令输出、时间点和结论,方便复盘。
- 修复后要回看指标是否恢复,并补充监控和告警。
# 5. 常用命令与工具
| 命令或工具 | 作用 | 使用建议 |
|---|---|---|
uptime | 查看负载和运行时间 | 判断是否刚重启或负载异常 |
sar -n DEV 1 | 查看网络吞吐统计 | 需要 sysstat 支持 |
journalctl -xe | 查看 Linux 系统日志 | 排查服务和内核错误 |
# 6. 常见误区
- 先改配置再取证:会破坏现场,让真正原因更难确认。
- 只看平均值:延迟问题要看分位数、峰值和队列积压。
- 单点证据下结论:指标、日志、栈、系统调用最好互相印证。
# 7. 进阶研究方向
- 学习 USE 方法、RED 方法和火焰图分析。
- 搭建一套主机级指标、日志和 Trace 的观测面板。
- 研究 eBPF 在无侵入排障中的应用。
# 8. Tips 快问快答
Q:性能排障第一步是什么?
A:先确认影响面、时间线和是否有变更,而不是马上调参数。
Q:为什么平均延迟不够?
A:少量慢请求会被平均值掩盖,用户体验更接近 P95、P99 等分位数。
Q:什么时候用采样 profiler?
A:当需要知道 CPU 时间花在哪些函数或调用路径上时使用。
# 9. 总结
系统排障不是命令大全,而是一套证据驱动的方法。能把指标、日志、系统调用和应用栈串起来,才算真正具备操作系统工程能力。
上次更新: 2026/06/25, 10:02:19