Linux性能分析与内核参数
Linux 性能分析要从观测开始,而不是从调 sysctl 开始。内核参数能改变系统行为,但只有在证据充分时才应该调整。
# 1. 学习目标
- 掌握 CPU、内存、磁盘、网络和系统调用的基础观测工具。
- 理解 sysctl、ulimit、cgroup 和调度参数的影响。
- 能形成性能基线、压测结果和调优记录。
# 2. 知识框架
Linux性能分析与内核参数
├─ 入门:建立术语、对象和日常操作的直觉
├─ 进阶:理解机制、边界和跨平台差异
└─ 专家:能排障、能设计、能阅读实现和研究材料
性能方法论:先观测,再假设,再验证,最后固化。参数调整必须有回滚方案和对照数据。
# 3. 核心概念
| 主题 | 说明 | 工程关注 |
|---|---|---|
| sysctl | 运行时查看和调整内核参数 | 网络、VM、文件句柄等行为 |
| ulimit | 进程资源限制 | 文件句柄、进程数、栈大小 |
| cgroup | 资源限制和统计机制 | 容器、服务隔离、节流 |
| eBPF | 在内核安全挂载观测程序 | 低侵入性能分析 |
# 4. 机制与实践
- 调参前记录当前值、问题现象、指标基线和预期变化。
- 优先解决应用层队列、连接池、慢查询和锁竞争,再考虑内核参数。
- 参数变更要灰度,观察 CPU、内存、网络错误和业务指标。
# 5. 常用命令与工具
| 命令或工具 | 作用 | 使用建议 |
|---|---|---|
sysctl -a | 查看内核参数 | 筛选目标参数,不要盲目全改 |
ulimit -n | 查看文件句柄限制 | 高并发服务重点关注 |
pidstat -urd 1 | 观察进程 CPU、内存、IO | 按进程定位资源使用 |
# 6. 常见误区
- 网上复制调优模板:不同内核、硬件、业务负载下参数效果不同。
- 只提高限制不看泄漏:文件句柄上限调大不能解决连接泄漏。
- 没有基线:没有前后对比就无法判断调优是否有效。
# 7. 进阶研究方向
- 学习 Brendan Gregg 的 USE 方法和 Linux 性能工具体系。
- 研究 TCP 参数、内存回收参数和文件句柄限制的真实影响。
- 用 eBPF 工具观察系统调用延迟、磁盘延迟和网络重传。
# 8. Tips 快问快答
Q:什么时候应该调 sysctl?
A:当明确瓶颈来自内核默认行为或资源限制,并且有指标证明调整能改善问题时。
Q:ulimit 改了为什么服务没生效?
A:服务可能由 systemd 管理,需要在 unit 或 system 配置中设置限制并重启。
Q:性能优化最怕什么?
A:最怕没有证据的全局调参,可能引入新风险且难以回滚。
# 9. 总结
Linux 调优的本质是基于证据改变系统行为。参数只是工具,方法论、基线和验证才是资深工程师的分水岭。
上次更新: 2026/06/25, 10:02:19