预约咨询 提交工单

生产运行手册:Linux 服务器高 CPU 负载故障排除

为 SRE 提供的逐步指南,用于诊断和解决生产 Linux 环境中的高 CPU 负载问题,包含安全控制和升级标准。

生产运行手册:Linux 服务器高 CPU 负载故障排除
DevOps 6min 39 浏览 2026-06-24
LinuxSRE故障排除

场景

生产 Linux 服务器突然响应缓慢,监控告警显示 CPU 使用率持续超过 90%。

症状

  • SSH 连接缓慢或超时
  • 应用程序响应时间增加
  • topuptime 显示高负载平均值

诊断

  1. 通过 SSH 连接到服务器,使用备用管理 IP 或带外管理(如 iDRAC)。
  2. 运行 top -b -n1 查看实时进程,按 P 按 CPU 排序,找出最占用 CPU 的进程。
  3. 使用 ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu | head 确认。
  4. 检查进程详情:ls -l /proc/<PID>/exe 以及 strace -p <PID> -c -S time 2>&1 追踪系统调用。
  5. 使用 perf top 进行性能分析(如果已安装)。
  6. 检查系统日志:journalctl -u <service> --since "5 minutes ago"

命令

  • 收集进程信息:ps -p <PID> -o pid,ppid,user,start,etime,%cpu,%mem,cmd
  • 分析线程:top -H -p <PID>ps -L -p <PID>
  • 获取内存映射:pmap -x <PID>
  • 堆栈跟踪:pstack <PID>gdb -batch -ex "thread apply all bt" -p <PID>
  • 使用 nice 调整优先级:renice +10 <PID>(降低 CPU 竞争)

风险控制

  • 在杀死进程前,确认其是否属于关键业务服务。
  • 使用 kill -STOP <PID> 暂停进程而非直接终止。
  • 如果进程是孤儿或僵尸,检查父进程;必要时重启父服务。
  • 对非核心进程使用 systemctl restart <service> 而不是直接 kill。
  • 避免在高峰时段运行 perfstrace,它们本身会增加开销。

回滚

  • 如果误杀了进程,立即重启服务:systemctl start <service> 或手动启动命令。
  • 如果调整了优先级却导致其他问题,使用 renice 0 <PID> 恢复默认。
  • 如果故障转移对集群有影响,切换到备用节点。

验证

  • 运行 top 确认 CPU 使用率降至正常水平(例如 <50%)。
  • 检查应用健康端点:curl -I http://localhost:8080/health
  • 监控日志确认无新错误:tail -f /var/log/syslog | grep -i error
  • 在负载测试工具中检查响应时间。

何时提交 OpsGlobal 工单

  • 无法确定进程来源或归属。
  • 进程反复重启或无法被杀掉(如处于不可中断睡眠 D 状态)。
  • 需要回顾代码或内核级别的根本原因分析。
  • 补丁或配置更改需要变更管理。

适用场景

适合正在处理 DevOps、Linux, SRE, 故障排除 相关问题的团队,用于快速建立排查路径和交付标准。

问题背景

为 SRE 提供的逐步指南,用于诊断和解决生产 Linux 环境中的高 CPU 负载问题,包含安全控制和升级标准。

排查步骤

先确认影响范围和最近变更,再收集日志、配置、指标和链路数据,最后按风险从低到高执行修复。

命令示例

示例命令请替换为你的真实资源名,并使用环境变量保存账号、密码、token 等敏感信息。

风险说明

生产环境操作前需要确认备份、权限边界、变更窗口和回滚路径,避免扩大故障影响。

回滚方案

保留原配置和发布版本;如修复后指标异常,立即回退配置、镜像或数据库变更并复核日志。

交付清单

问题定位记录、关键命令、修复步骤、验证结果、后续优化建议。

!

遇到类似技术问题?

如果你的服务器、K8s、Docker、CI/CD、数据库或监控系统出现类似问题,可以提交日志和配置文件,我们帮你远程诊断。

工单 WhatsApp 联系 咨询