找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1622

积分

0

好友

232

主题
发表于 8 小时前 | 查看: 1| 回复: 0

图片

业务突发宕机是运维工作中最具挑战性的场景之一。面对“服务不可用”的警报和用户反馈,一套清晰、高效的排查思路往往比记住大量命令更为关键。本文将分享一套以“定范围、分层查”为核心的标准化排查流程,结合一线实战经验总结的命令与步骤,旨在帮助运维工程师在15分钟内完成问题初步定位与应急处理。

一、快速响应:3分钟界定问题范围

在动手敲命令前,花几分钟回答以下三个问题,能帮你迅速锁定排查方向,避免盲目操作。

  1. 影响范围:是单个用户、特定地域还是全体用户?地域性问题应优先排查CDN或本地运营商网络。
  2. 故障模块:是整站不可用,还是特定功能模块(如支付、登录)故障?模块化问题可直接聚焦对应服务集群。
  3. 故障特征:是持续性宕机还是间歇性波动?是否伴随流量洪峰或近期发布过变更?高峰期的故障常指向资源瓶颈,变更后的问题则可能与配置或代码相关。

示例:若仅有深圳地区的用户反馈下单失败,且一小时内曾调整过CDN配置,则应优先检查CDN在深圳区域的节点状态,从而节省大量排查时间。

二、分层排查法:10分钟逐层定位

遵循从外到内、从基础设施到应用的排查顺序,可以有效覆盖所有关键环节。建议为每个层次分配1-2分钟进行快速验证。

1. 网络层:验证基础连通性

核心目标是确认服务端网络可访问,端口已监听。

  • 服务器连通性ping -c 4 目标IP或域名 (请求超时则网络不通)
  • 路由追踪traceroute 目标IP (查看在哪一跳出现超时,定位故障节点)
  • 端口可达性telnet 目标IP 端口号 (如 8080,连接被拒绝则端口未开放)
  • 接口状态curl -I http://API地址 (返回200为正常,4xx/5xx为异常)

常见原因与处置:防火墙规则误禁、运营商网络抖动。可临时放行端口或切换备用网络线路。

2. 系统层:检查资源瓶颈

资源耗尽是导致服务宕机的常见原因,需快速检查CPU、内存、磁盘。

  • CPU与负载top (按P键按CPU排序,%CPU持续>90%视为过载),uptime (1/5/15分钟负载值若持续高于CPU核心数,则系统压力大)
  • 内存使用free -h (查看available字段,若接近0则内存严重不足)
  • 磁盘空间df -h (任何分区使用率>85%需警惕,>95%可能已影响服务),du -sh /data/* (定位占用空间过大的目录或文件)
  • 系统日志journalctl -n 100tail -100 /var/log/messages (搜索 OOMdisk full 等关键错误)

应急操作:终止非关键进程(kill -9 PID),清理过期日志文件(echo ““ > 日志文件)。高效的系统监控与告警能在此环节发挥巨大作用。

3. 应用层:验证服务健康度

服务异常常表现为502/503错误,重点检查进程、端口及自身日志。

  • 服务状态systemctl status 服务名 (如 nginx,状态应为 active (running))
  • 进程检查ps -ef | grep 服务名 (无结果则进程未运行)
  • 端口监听ss -tulnp | grep :端口号 (无结果说明服务未监听该端口)
  • 应用日志与健康检查tail -f /var/log/应用名.log (实时追踪ERROR级别日志),curl http://localhost:端口/actuator/health (UP为健康)

常见原因与处置:进程崩溃、端口被占用。可尝试重启服务或释放被占用的端口。

4. 数据层:确认存储服务状态

数据库或缓存中间件故障会直接导致业务停滞。

  • MySQL
    • 连通性测试:mysql -u用户名 -p密码 -h 主机IP -e “select 1;”
    • 查看进程与慢查询:mysql -e “show full processlist;” (关注StateLocked的阻塞进程和执行时间过长的查询)
  • Redis
    • 连通性测试:redis-cli -h 主机IP ping (返回PONG为正常)
    • 检查慢日志:redis-cli -h 主机IP slowlog get 5 (获取最近5条慢命令)

应急操作:在评估影响后,可终止导致阻塞的数据库会话(kill 会话ID),或临时调大连接数上限(set global max_connections=2000;)。

5. 外部依赖:排查第三方服务

调用第三方API、CDN或DNS解析故障常被忽略。

  • 第三方接口curl -m 5 -I 第三方API地址 (5秒内无响应或返回5xx,可初步判断为对方服务异常)
  • DNS解析nslookup 目标域名 (检查解析出的IP是否正确,错误IP可能指向劫持或配置错误)
  • CDN缓存curl -v 静态资源URL 2>&1 | grep -i cache (观察缓存命中状态,节点故障时可联系CDN服务商刷新缓存)

应急方案:如有备用接口可暂时切换,或临时修改本地DNS服务器为公共DNS(如223.5.5.5)。

6. 安全设备:确认是否存在误拦截

若错误码为403,需考虑安全策略的误拦截。

  • 防火墙规则iptables -L -n -v (查看是否有DROP规则命中),firewall-cmd --list-ports (确认端口已放行)
  • WAF/IPS:联系安全团队查看安全设备的拦截日志,临时将合法业务IP加入白名单。

三、信息收集:为事后复盘做准备

在排查过程中,应有意识地同步收集以下信息,以便后续进行根因分析:

  1. 用户端的完整错误截图(含错误码、时间戳)。
  2. 系统、应用日志中的关键错误片段。
  3. 故障时间点前后的服务器监控数据(CPU、内存、磁盘IO、网络流量)。
  4. 相关服务(数据库、缓存、依赖接口)的状态快照。

四、故障复盘与优化:避免重蹈覆辙

问题恢复后,以下三步是提升系统韧性的关键:

  1. 根因分析:明确是资源规划不足、配置错误、代码缺陷还是第三方问题,并明确改进责任。
  2. 监控加固:为核心业务指标(如接口99分位响应时间、数据库连接数、队列长度)设置更灵敏的告警(集成至钉钉/企业微信等)。
  3. 工具沉淀:将此次排查中验证有效的命令集,封装成自动化检查脚本,实现一键化运维诊断

总结

应对业务宕机,关键在于保持清晰的排查逻辑:先界定范围,再按网络、系统、应用、数据、外部依赖、安全设备的顺序分层突破。遵循本指南的步骤,绝大多数常见故障都能在15分钟内得到有效定位和处理。将此流程固化为团队的标准应急响应预案,能极大提升故障恢复效率与团队协同能力。

图片




上一篇:Vim可视模式高效编辑详解:字符、行与列块文本操作实战
下一篇:PyTorch/TensorFlow计算图内存优化:视图变换与策略实践
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-24 18:57 , Processed in 0.267601 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表