Linux 服务器 CPU 占用过高排查流程
Linux 服务器 CPU 占用过高排查流程
一、问题现象
- 系统响应变慢或无响应
- 监控告警显示 CPU 使用率持续高于 80%
- 业务服务出现超时或失败
二、快速定位
2.1 查看整体 CPU 使用情况
1 | # 实时查看 CPU 使用率 |
2.2 识别占用 CPU 的进程
1 | # 按 CPU 使用率排序进程 |
三、深入分析
3.1 用户态 vs 内核态
1 | # 查看 CPU 时间分布 |
判断标准:
us高:应用程序问题sy高:系统调用频繁或驱动问题wa高:I/O 瓶颈
3.2 线程级分析
1 | # 获取进程 PID |
3.3 系统调用分析
1 | # 追踪系统调用 |
四、常见原因及解决方案
4.1 应用层问题
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 单进程 CPU 100% | 死循环/复杂计算 | 检查代码逻辑,优化算法 |
| 多进程 CPU 高 | 并发量过大 | 限流、扩容 |
| Java 应用 CPU 高 | GC 频繁 | 调整 JVM 参数,检查内存泄漏 |
4.2 系统层问题
1 | # 检查是否有僵尸进程 |
4.3 Java 应用专项排查
1 | # 获取 Java 进程 PID |
五、应急处理
5.1 临时降载
1 | # 限制进程 CPU 使用率 |
5.2 服务重启
1 | # 优雅重启 |
六、预防措施
- 监控告警: 配置 CPU 使用率告警阈值(建议 80%)
- 资源限制: 使用 cgroups 限制进程资源
- 容量规划: 定期评估业务增长,提前扩容
- 代码审查: 避免死循环和低效算法
- 压测演练: 定期进行压力测试发现瓶颈
七、排查流程图
1 | CPU 告警 → top 定位进程 → ps 确认进程详情 |
文档生成时间:2026-03-03
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 体系所运维知识库!