LinuxSRE故障排查高负载性能
场景
生产 Web 服务器出现整体响应缓慢,用户报告页面加载超时。监控显示系统平均负载(load average)持续高于 CPU 核心数的 80%。
症状
- 应用程序请求延迟显著增加
- SSH 登录响应迟钝
top或uptime显示 load average 过高- 可能伴随高 CPU 使用率、高 I/O 等待或内存交换
诊断步骤
- 快速检查系统状态:
bash uptime top -bn1 | head -n 20 free -h df -h - 分析 CPU 使用率:
bash mpstat -P ALL 1 5 # 关注 %usr, %sys, %iowait - 定位高 CPU 进程:
bash ps aux --sort=-%cpu | head -10 pidstat -u 1 5 - 检查磁盘 I/O(若 %iowait 高):
bash iostat -x 1 5 # 查看 await, %util - 追踪系统调用(谨慎):
bash strace -p <PID> -c -S time 2>&1 | head -20 # 仅运行 5 秒 - 检查内核日志:
bash dmesg --level=err,warn | tail -20
风险控制
- 在生产环境执行诊断前,优先在副本或低流量节点操作
strace限制时间(-S 或 timeout),避免进程挂起- 避免在生产直接执行
kill -9;使用kill -TERM或重启服务 - 记录所有执行命令及输出
回滚步骤
若误操作或需要恢复:
- 若终止了关键进程,立即重启服务:systemctl restart <service-name>
- 若修改系统参数(如 vm.swappiness),恢复原值并刷新:sysctl -p
- 若安装临时工具,卸载并清理:yum remove -y <tool> 或 apt-get purge
验证
- 确认负载下降:
uptime及top显示 load average 趋于正常 - 验证应用响应:通过 curl 测试 API 端点返回时间
- 检查监控告警是否消除
何时提交 OpsGlobal 工单
- 根本原因不明确(如硬件故障怀疑)
- 负载反复波动无法控制
- 需要深入调试(如 perf 分析)或内核参数优化
- 需要扩容建议或架构调整
适用场景
适合正在处理 DevOps、Linux, SRE, 故障排查, 高负载 相关问题的团队,用于快速建立排查路径和交付标准。
问题背景
本手册提供生产环境中 Linux 服务器高负载问题的系统化排查步骤,涵盖场景、症状、诊断命令、风险控制、回滚、验证及何时提交 OpsGlobal 工单。
排查步骤
先确认影响范围和最近变更,再收集日志、配置、指标和链路数据,最后按风险从低到高执行修复。
命令示例
示例命令请替换为你的真实资源名,并使用环境变量保存账号、密码、token 等敏感信息。
风险说明
生产环境操作前需要确认备份、权限边界、变更窗口和回滚路径,避免扩大故障影响。
回滚方案
保留原配置和发布版本;如修复后指标异常,立即回退配置、镜像或数据库变更并复核日志。
交付清单
问题定位记录、关键命令、修复步骤、验证结果、后续优化建议。
遇到类似技术问题?
如果你的服务器、K8s、Docker、CI/CD、数据库或监控系统出现类似问题,可以提交日志和配置文件,我们帮你远程诊断。