凌晨大促时,CDN回源连续出现3秒超时、502和403,监控却只标记“回源失败”。运维既担心重试压垮源站,又担心切换备用CDN扩大故障。真正缺少的是区分链路超时、源站错误与鉴权异常的证据链。
如果你正在选机器,或者想先把线路和配置跑通再谈长期方案,可以先看看这几家的线路说明和技术参数:hostkvm(服务器与主机),先看清带宽线路、流量策略和退款条款,再决定要不要迁。
排查应从CDN回源链路追踪入手:用请求ID串联边缘节点日志、负载均衡日志和源站访问日志,同时记录回源地址、节点、连接耗时、首字节耗时及响应头。状态码只能提供线索,不能单独证明错误来自哪里。

若边缘侧只等到连接或读取上限,而源站在同一时段没有对应请求记录,通常属于回源超时。连接超时多见于网络抖动、DNS异常或端口不可达;首字节超时则应检查源站线程池、数据库阻塞和连接池是否耗尽。偶发超时可恢复,持续超时往往已经形成容量瓶颈。
收到502、503或504时,要确认它们是源站真实返回,还是CDN因代理失败生成。源站日志存在相同请求ID和上游标识,可判定为源站错误;若源站无记录,则应继续检查CDN到负载均衡之间的链路。一次故障中,两类状态码并存并不矛盾。
401和403通常指向鉴权异常。核对源站日志中的鉴权结果、CDN是否完整透传Authorization、Host及签名头,并确认密钥时钟、来源白名单和权限策略没有漂移。此类错误重试不会自行恢复,直接扩容流量反而可能扩大拒绝范围。
只有已确认的超时、429及部分502、503适合重试。采用指数退避重试时,可从200毫秒开始,按倍数增长并加入随机抖动,单请求最多重试2次;同时设置总时间预算。连接失败可按节点重试,但鉴权失败、证书错误和明确的4xx禁止重试。

当连续超时和源站5xx达到源站故障熔断阈值后,应暂停向故障节点回源,而不是让每个请求各自重试。可按1分钟窗口统计,在样本数达到20次、失败率超过50%并持续10秒后熔断30秒,再通过少量探测请求半开恢复。阈值应按业务容量和延迟目标调整。
启用备用CDN前需满足三点:故障已归属同一源站或回源网络,备用节点能够正常访问源站,且鉴权规则与回源鉴权头透传策略已经验证。建议先把10%至20%的流量切入观察,错误率和延迟稳定后再逐步扩大;若备用CDN仍回源同一故障集群,单纯换边缘节点没有意义。
实际中最常见的坑,是看到403就熔断、看到502就全量切换。应在告警面板保留错误来源、节点维度和请求ID,避免聚合指标掩盖局部异常。ServLlama可用于汇总多节点日志、关联请求轨迹和观察流量变化,帮助确认切换收益,而不是用一次状态码直接触发动作。
源站故障熔断阈值不能只写“连续失败三次”。应按域名与回源集群统计滑动窗口,区分连接拒绝、连接重置、超时与 5xx;客户端 4xx、鉴权失败、对象不存在不应计入源站故障。窗口还需设置最小样本量、失败率与连续失败阈值;小流量时启用低流量保护,避免偶发失败误熔断。熔断打开后返回降级页或旧版本,再以半开探测恢复。

重试只用于瞬时错误,并受总时间预算约束。指数退避重试采用“基础延迟×2+随机抖动”,限制次数与单次上限,并尊重 Retry-After;还须确认边缘、网关、源站不会层层重试,避免回源风暴。CDN回源链路追踪应使用统一请求标识贯穿各层日志,关联状态码、耗时、重试次数与节点编号,定位故障所在跳。
回源鉴权头透传不能只转发 Authorization,还要核对自定义令牌、时间戳、签名、Host 与内容校验头,防止代理改写或 CDN 重复注入。若使用 HMAC,时间戳、nonce 和路径都应参与校验,过期凭证不可复用,密钥不得下发客户端。日志要对凭证脱敏,并分别记录缓存命中和真实回源,避免缓存正常掩盖回源异常。
多CDN流量调度应综合区域成功率、P95/P99 回源时延、带宽、连接池水位和健康检查,而非只看平均延迟。主 CDN 异常时先摘除故障区域,再将流量切至备用 CDN;切换前校验容量,设置冷却、迟滞和人工回切开关,防止两家 CDN 因指标抖动反复抢占。还要统一 4xx、5xx、超时与空响应口径,避免错误被统计为成功。
可执行检查清单:①低峰注入 502、超时和连接重置,验证熔断、低流量保护、半开恢复及降级页;②核算“边缘×网关×源站”的重试放大倍数,超预算则只保留一层重试;③抽查各层日志,确认同一请求标识能关联耗时、状态码和鉴权头;④核对错误缓存、Host、Authorization 与自定义签名白名单;⑤压测备用 CDN 容量,演练切换、冷却和回切;⑥为失败率、P99、熔断状态、切换流量、重试次数设置分级告警,并留存变更与回滚方案。上线时先灰度一个区域,再依据一周基线校准阈值。