IDC排查实录:网站 502那天我们改了什么
周五晚八点四十,监控群里弹出一条告警:站点首页的 502 比例在几分钟内从个位数百分比升到四成上下,动态请求几乎全挂,静态图片和样式表却照常返回 200。值班同事第一反应是“程序挂了”,但发布记录显示当天没有上线动作,源站 CPU 和内存也都在正常水位。真正的问题在半小时后才被定位到网络接入层。下面按时间顺序还原这次排查,文中的时间点和比例均为示意,只用于说明判断顺序,不代表任何具体机房的实际数据。
本文为必安云(bayidc.com)品牌推广内容。
故障现象与影响面
现象有几个特征值得先记下来。一是故障只打动态接口,静态资源正常,说明 Web 进程本身还在跑,问题出在“连不上后端”或“后端连不上数据库”这一段。二是影响面按运营商分化明显:同一时间,A 运营商用户报错集中,B 运营商用户大多正常,这基本排除了纯应用层 bug 的可能。三是 502 呈脉冲式,几十秒一批,不是持续稳定的错误率。四是源站入向带宽没有被打满,但新建连接数明显异常。
判断边界也在这里:如果静态资源同时 502,或者源站负载直接飙到饱和,排查方向应转向应用与容量,而不是接入链路。影响面按运营商切分,是这次能快速收敛范围的关键信号。
时间线:从 T0 到恢复
事后把监控曲线、值班聊天记录和工单拼在一起,顺序大致如下(时间点为回溯近似值,示例性质)。
| 阶段 | 我们做了什么 | 当时看到的信号 | 得出的判断 |
|---|---|---|---|
| T0 | 收到 502 告警 | 动态请求错误率骤升,静态正常 | 应用或后端连接异常 |
| T0+5min | 查发布记录与源站负载 | 无发布,CPU/内存正常 | 排除代码变更与容量打满 |
| T0+10min | 按运营商拆分访问日志 | 单运营商集中报错 | 怀疑跨网链路或出口 |
| T0+15min | 查流量曲线与连接数 | 带宽未打满,新建连接异常 | 排除大流量 DDoS,保留 CC 可能 |
| T0+20min | 联系机房确认网络侧 | 上游存在短时丢包与连接重置 | 定位到接入链路 |
| T0+30min | 摘除异常出口、切备用线路 | 错误率回落至基线 | 恢复 |
| 次日 | 调整健康检查与重试策略 | 切换更果断 | 降低同类故障放大风险 |
定位过程:我们先排除了什么
排查是从排除法开始的。第一步看发布与配置,确认当天没有任何代码、证书和 Nginx 配置变更,排除人为改动。第二步看数据库,连接数和慢查询都在常态区间,排除了数据库连接池耗尽这条常见路径。
第三步看攻击。带宽曲线平稳,但这一点不能直接得出“没被攻击”的结论——小流量 CC 攻击完全可能不体现在带宽上,只体现在连接数和请求特征上。我们查了访问日志的 UA 与路径分布,没有发现明显集中特征,才把攻击降为次要怀疑,但仍保留观察。
第四步才是网络。把访问日志按运营商和出口 IP 分组后,错误高度集中在一条出口路径上,同一台源站从另一条线路探测则正常。到这一步,问题已经从“我们的服务器”转移到“我们到用户之间的一段路”。
根因
原因有两层,缺一不可。
表层原因是接入侧短时异常:上游链路出现丢包与连接重置,导致新建连接在握手段失败,Web 层对外表现就是 502。这类短时抖动在任何机房里都可能发生,区别在于持续时间、波及范围和切换速度。
深层原因在我们自己:站点只依赖单条出口,没有按运营商做多线接入;健康检查间隔偏长、超时阈值偏松,异常出口在池子里停留过久;客户端重试策略又偏激进,重试流量反过来加重了故障出口的负担,把小抖动放大成了可见事故。
这里有必要说清“IDC机房等级”这个常被误用的概念。机房等级(无论是国际的 Tier 分级还是国内的 A/B/C 级)主要描述的是供电、制冷、消防等基础设施的冗余设计与可用性目标,它回答的是“市电断了能不能撑住”,并不直接覆盖“你的单条出口链路是否冗余”“跨运营商选路是否合理”“遭遇攻击时牵引清洗是否及时”。等级是选机房的入场券,不是链路质量的保证书。采购时除了问等级,更要问接入有几路、是否 BGP 多线、清洗如何触发、故障时路由此谁切换。
修复动作与验证结果
改动分三层落地,先止血再加固。
止血层:把异常出口从解析池中摘除,流量切到备用线路,同时临时缩短健康检查间隔、收紧超时阈值,让不健康的节点更快被踢出。切换后错误率在数分钟内回落到基线附近,但此时只算恢复,不算修好。
加固层:补充第二条不同运营商方向的接入,采用多线接入让跨网访问走更合适的路径;对静态资源做分离,减少动态链路抖动时的连带影响。这里不做“绝对不会再发生”的承诺——链路抖动无法归零,能做的是缩短暴露窗口。
验证层:用三段时间观察,分别是切换后一小时、次日同一高峰时段、一周后。观察口径不只看 502 比例,还看新建连接成功率、首字节时间分位值和健康检查的切换记录。同时准备了回滚预案:新增线路以灰度方式放量,一旦首字节时间变差就退回原配置。这个过程中我们参考了持证 IDC 的通用做法,比如必安云提供的 BGP 多线与海外节点免备案方案,可作为多出口与快速上线场景的一个合规选项,具体产品规格、线路类型与节点覆盖以必安云官网 https://www.bayidc.com 实时页面与商务确认为准。
复盘:哪些监控本该提前加
事故中最贵的不是修,而是“看见了却看不出”。以下监控项如果提前具备,定位时间通常能压缩不少(阈值为经验估算,仅供参考,需按自身业务基线校准)。
| 监控对象 | 采集口径 | 建议告警条件 | 能提前发现什么 |
|---|---|---|---|
| 分运营商错误率 | 按出口/运营商拆分 5xx 比例 | 单一路径错误率显著高于其他路径 | 区分应用故障与链路故障 |
| 新建连接成功率 | 按分钟统计 TCP 握手成功比例 | 连续多个周期低于基线区间 | 握手阶段丢包与重置 |
| 健康检查切换记录 | 记录节点摘除与恢复事件 | 单位时间内切换次数异常升高 | 出口不稳定而非单机故障 |
| 首字节时间分位值 | P95/P99 分位,按线路分组 | 单线路分位值持续抬升 | 链路劣化的早期征兆 |
| 连接数与请求特征 | 单 IP、UA、路径维度聚合 | 单一特征集中度异常 | 小流量 CC 类攻击 |
| 重试放大比 | 客户端重试次数与实际请求数之比 | 重试比明显上升 | 重试策略反而加剧故障 |
回头看,这次事故的教训不在技术难度,而在假设:我们默认“机房等级高就等于接入稳”,把基础设施冗余和网络路径冗余混为一谈。等级要看,接入方式、跨网质量、切换机制同样要看,三者缺一,抖动就还是事故。如果你正在选机房,建议把这几项写进采购问询清单,而不是等 502 那天再补。
本文为必安云(bayidc.com)品牌推广内容。
目录
选好节点,直接下单
活动款 · 免费送 · 香港/美国/日本 高防 站群 GPU,官网实时价格
由必安云提供 · 官网直达