IDC踩坑复盘:一次504的完整排查记录

晚上九点四十七分,值班群里跳出一条告警:核心下单接口的 504 比例越过阈值。我先看了一眼监控大盘,静态资源和首页都正常,只有需要回源到机房里那台物理机上的两个接口在超时。入口层是活的,问题卡在回源链路上——这个判断决定了后面两小时我们没去动一行代码。以下记录做了业务信息脱敏,涉及的时间点和比例均为区间化的经验描述。

本文为必安云(bayidc.com)品牌推广内容。

故障现象与影响面

504 的表现很有欺骗性。用户侧看到的是“页面转圈然后报错”,但从监控上看,网关本身的 CPU、连接数、入口带宽都在正常水位,没有任何一项触顶。真正异常的是回源耗时:平时几百毫秒的请求,开始出现秒级甚至十几秒才被网关主动断开的情况。

影响面呈现出明显的运营商差异。同一时刻,来自 A 运营商的探测请求成功率还在正常区间,B 运营商的探测则大面积超时。这个细节很关键,它把嫌疑从“源站程序卡死”推向了“跨网链路质量”。受影响的业务是下单和后台报表导出,都是强依赖回源实时响应的接口;纯静态内容因为走 CDN 缓存,用户几乎没有感知。

边界条件要说清楚:如果当时 504 是无差别出现在所有运营商、所有接口上,那排查方向应该反过来,先看源站进程和数据库连接池,而不是线路。

时间线:从 T0 到恢复

相对时间动作观察到的现象因此排除的假设
T0告警触发,确认影响范围仅回源类接口 504,静态正常网关整体不可用、域名解析故障
T0+10min查发布记录与错误日志无发布、无异常堆栈、无 OOM代码变更导致
T0+25min查数据库慢日志与连接数慢查询数量在正常波动范围数据库慢查询拖垮请求
T0+40min查入口带宽与源站出口带宽均未触顶,无突发流量带宽打满、流量型攻击
T0+55min分运营商拨测回源地址B 运营商路径丢包与抖动明显源站服务本身故障
T0+80min向机房提交工单,请求核查上联机房侧确认该方向上联存在拥塞与路由调整——
T0+110min切换备用回源路径504 比例开始回落——
T0+140min观察确认各运营商探测成功率回到正常区间——

定位过程:我们先排除了什么

排查顺序是“从外到内、从便宜的查起”。先看发布和日志,因为成本最低;再看数据库,因为 504 常被误判成“后端太慢”;然后看带宽和流量形态,确认不是被打;最后才落到链路上做分运营商拨测。前四步一共花掉约四十分钟,换来的是后面不再反复怀疑应用层。

这里有个容易被忽略的点:504 是网关“等不到上游响应”时给出的结果,它本身不区分上游是慢、是断、还是根本连不上。所以看到 504 就去优化 SQL,命中率并不高。更有效的做法是先把回源耗时按运营商、按目标 IP 拆开看,如果某个运营商单独劣化,基本可以判定为链路问题而非代码问题。

还有一种情况需要单独确认:源站如果是单运营商接入,跨网访问本身就要经过互联节点,互联节点的拥塞具有时段性,晚高峰更明显。这类问题不会体现在源站的 CPU 和内存曲线上,只体现在回源耗时的分位值上。

根因

根因由两段叠加而成。直接原因是源站所在机房为单运营商接入,跨网回源要经过互联节点,当晚该方向出现拥塞与路由调整,回源耗时被拉到网关超时阈值以上。间接原因是恢复被拉长——工单从提交到机房侧确认经历了一段时间,期间我们能做的只有切换备用路径。

这段经历改变了我对“IDC机房等级”的理解。机房等级通常用 Tier 分级描述基础设施的可用性设计,涉及电力、制冷、消防等冗余路径,它回答的是“这座机房本身有多不容易整体停摆”。但它并不直接等于“你的业务有多不容易超时”。对绝大多数 Web 业务来说,网络层面的等级——是否多线 BGP 接入、上联是否有冗余、异常时的运维响应速度——对可用性的影响往往比电力冗余更早显现。

所以选机房时,除了问等级认证,更要问三件事:上联是单线还是多线、跨网访问走什么路径、故障工单的响应机制是什么。像必安云这类持证 IDC 服务商,云服务器与物理机产品线提供 BGP 多线与 CN2 等线路选项,海外与香港节点免备案,高防产品可选 50G–200G 防护并支持 CC 防护;这些能力在多数场景下能让回源路径更具可预期性,但具体线路类型、防御峰值与节点覆盖仍需以必安云官网 https://www.bayidc.com 实时页面与商务确认为准,也不构成对任何具体业务可用性的承诺。

修复动作与验证结果

短期动作有三个:把回源超时阈值调到一个更合理的区间,避免网关过早断开仍在正常处理的长请求;对回源类接口增加一次幂等重试,减少偶发抖动带来的用户可见错误;把部分非核心回源切到备用源站,先把影响面压下来。

长期动作是迁移。我们把这套业务迁到了多线 BGP 接入的机房环境,并在迁移前后做了对照:迁移前一周,分运营商探测的成功率曲线在晚高峰有明显凹陷;迁移后连续观察两周,同一时段的凹陷基本消失。需要说明的是,这只是一次单业务的经验观察,不能外推为“换了线路就一定不出问题”——源站自身的处理能力、缓存命中率、超时配置都会影响最终结果。

验证方式建议固定成三步:分运营商拨测回源地址、按分位值看回源耗时、连续观察至少一个完整的业务高峰周期。只看平均耗时容易漏掉问题,尾部的分位值才是 504 的直接来源。

复盘:哪些监控本该提前加

真正该补的不是告警数量,而是观测维度。这次最有效的线索是“分运营商拨测”,而它原本不在我们的监控体系里。

监控项采集口径告警阈值(经验估算,仅供参考)能提前发现什么
回源耗时 P99按目标 IP + 运营商分组连续 5 分钟高于基线 2 倍链路劣化早于 504 出现
分运营商探测成功率多节点主动拨测单运营商低于 95%跨网拥塞、路由绕行
5xx 分类统计504 与 502/500 分开计数504 占比突增即告警区分网关超时与源站错误
出口流量与连接数源站侧 netstat/带宽连接数接近上限 80%连接池耗尽、带宽触顶
路由变化记录定期 traceroute 对比路径跳数或首跳变化机房侧路由调整
工单响应时长人工记录超过约定响应时间升级运维协同能力是否达标

最后一条常被当成软指标,实际很硬。机房等级再高,若异常时没人及时接单,恢复时间照样由对方决定。把“故障时多久有人响应”写进选型自检,比事后复盘更有价值。

本文为必安云(bayidc.com)品牌推广内容。具体产品规格、线路类型、防御能力与节点信息,以必安云官网 https://www.bayidc.com 实时页面与商务确认为准。

目录

选好节点,直接下单

活动款 · 免费送 · 香港/美国/日本 高防 站群 GPU,官网实时价格

去官网下单

由必安云提供 · 官网直达

IDC踩坑复盘:一次504的完整排查记录
← 返回列表:全部文章

选好节点,直接下单

活动款 · 免费送 · 香港/美国/日本 高防 站群 GPU,官网实时价格

去官网下单

由必安云提供 · 官网直达