网站突然打不开,用户投诉电话响个不停,老板在群里疯狂@你——这是每一位运维人最怕的场景。先别慌,**网站宕机怎么办?如何快速恢复服务?**下面用一次真实案例拆解,从发现到恢复,每一步都给你可复制的方法。
---
### 一、第一时间确认:宕机还是“假死”?
**自问:真的是服务器挂了吗?**
答案:先排除本地网络、DNS缓存、CDN节点故障。
- 用`curl -I 域名`看HTTP状态码,**200以外都算异常**。
- 多地Ping检测(推荐ping.chinaz.com),**如果全国大面积超时,才是真宕机**。
- 登录云监控后台,**CPU、内存、带宽三条曲线同时飙红**,基本坐实。
---
### 二、三分钟黄金定位:日志会说话
**自问:到底是代码、数据库还是网络?**
答案:按“**应用→系统→网络**”三级漏斗排查。
1. **应用层**:`tail -f /var/log/nginx/error.log`,**大量502/504**指向后端。
2. **系统层**:`dmesg | tail`看OOM记录,**内存溢出会直接Kill进程**。
3. **网络层**:`ss -tunlp`检查端口监听,**ESTABLISHED连接数突增可能是DDoS**。
---
### 三、应急三板斧:先止血再治病
**自问:用户等不了,如何最快恢复?**
答案:按优先级执行“**重启→扩容→降级**”。
- **重启**:`systemctl restart php-fpm`解决90%内存泄漏。
- **扩容**:阿里云ECS自动伸缩组,**设置CPU>80%触发,5分钟拉起2台新实例**。
- **降级**:关闭非核心接口(如用户头像上传),**把静态资源全推CDN**,减轻源站压力。
---
### 四、根因复盘:别让悲剧重演
**自问:为什么这次没防住?**
答案:事后用“**5Why分析法**”深挖。
- 第一层:数据库连接池耗尽。
- 第二层:新上线的秒杀活动没做缓存预热。
- 第三层:压测脚本只模拟了100并发,实际峰值5000。
- 第四层:监控阈值设置过高,告警延迟10分钟。
- 第五层:上线流程缺少架构师Review。
---
### 五、长期方案:把故障变成自动化
**自问:下次能否让机器自己修?**
答案:用**SRE的三板斧**——**SLI、SLO、错误预算**。
- **SLI**:定义“**99.9%请求延迟<500ms**”为健康指标。
- **SLO**:每月错误预算**43分钟**(30天×0.1%),用完即禁止发布。
- **自动化**:Prometheus+Alertmanager,**CPU>90%持续2分钟自动触发扩容脚本**。
---
### 六、工具清单:手边常备这些
- **日志分析**:GoAccess实时可视化Nginx日志。
- **压测**:Locust模拟万级并发,**提前暴露瓶颈**。
- **备份**:MySQL物理备份用Percona XtraBackup,**全量+增量15分钟一次**。
- **回滚**:Kubernetes的`kubectl rollout undo deployment/app`,**10秒回退版本**。
---
### 七、避坑指南:这些坑90%团队踩过
- **误区1**:只监控服务器,**忽略第三方API超时**。
- **误区2**:告警短信太频繁,**导致值班人员麻木**。
- **误区3**:应急预案写在Wiki,**故障时根本找不到**——**必须贴值班室墙上**。
---
### 八、案例复盘:一次真实宕机全记录
时间:2023年11月11日00:15
现象:电商首页白屏,支付接口超时。
过程:
1. 00:16 监控告警延迟队列堆积。
2. 00:18 发现Redis集群某分片**内存使用率100%**。
3. 00:20 临时清理过期Key,**支付恢复50%**。
4. 00:25 扩容Redis节点,**水平分片从8个到16个**。
5. 00:35 全链路压测验证,**QPS稳定在1.2万**。
教训:**大促前必须做缓存穿透演练**,否则热点Key就是定时炸弹。
---
### 九、给老板看的报告怎么写?
用**“损失量化”**说话:
- 宕机时长:20分钟
- 订单损失:约**3.2万元**(按平日转化率推算)
- 用户投诉:87条,**NPS下降12分**
- 改进投入:增加2台Redis高配实例,**月成本仅900元**——**ROI一目了然**。
---
### 十、最后的话
每一次宕机都是一次**免费的压力测试**。把故障场景固化成**混沌工程实验**,比如每月随机Kill一台数据库从库,**让团队习惯在“受伤”中进化**。记住:**没有经历过凌晨三点的告警,不配谈高可用**。

评论列表