502故障恢复时间没有固定标准,短则几秒,长则数天,完全取决于故障根源。同样返回502页面,有的网站刷新几次就能恢复,有的网站持续故障半天以上。差异很大,判断恢复时长前,要先区分故障类型。
最常见情况是后端进程临时崩溃。比如PHP-FPM子进程内存超限被系统终止,或是Node.js程序捕获未处理异常直接退出。服务器配置自动重启机制,像systemd的Restart策略、supervisor守护程序,进程几秒内就能重新启动,Nginx恢复转发,用户看到页面短暂报错。没有自动重启的话,需要运维手动登录服务器启动服务,恢复时间取决于运维发现故障的速度,几分钟到几十分钟都有可能。

资源耗尽引发的502。CPU满载、内存占满,PHP-FPM进程池全部被占用,新请求排队无法获取空闲进程,Nginx等待超时返回502。恢复时间要看流量回落速度,或是是否有人做临时扩容。业务高峰期,可能要等一两个小时流量自然下降;如果是攻击、异常脚本刷接口,要先定位并封禁攻击源,快则十几分钟,慢则半天。重启服务只能临时缓解,资源瓶颈不解决,故障会反复出现。
数据库异常也会触发502。数据库连接数打满、慢查询堆积,数据库响应变慢,后端程序等待数据库返回结果超时,Nginx返回502。重启数据库几分钟就能恢复,但重启阶段所有请求都会失败。如果根源是一条低效SQL,重启只能临时生效,需要优化SQL或者新增索引,处理周期不确定,可能几小时,也可能拖到次日才有人处理。
配置错误导致的502,排查到问题后恢复很快。比如Nginx upstream地址填写错误、端口不匹配,修改配置重载服务,几秒就能恢复。难点在于发现故障,没有监控告警的情况下,只能等用户反馈,会多消耗十几分钟到半小时。云环境负载均衡有自身健康检查逻辑,后端节点刚故障时,健康检查还未标记异常,流量继续分发到故障节点,等到标记不健康并摘除节点,一般需要一到两分钟。
第三方依赖造成的502,可控性最差。后端程序调用支付接口、短信服务、对象存储,对方服务故障或者超时,当前请求无法处理完成,Nginx返回502。恢复时间完全取决于对方平台修复进度。我方可以做的只有调整超时阈值、增加降级逻辑,或是临时关闭相关功能。很多小团队没有准备降级方案,只能等待对方修复,等待时长可能几小时甚至一整天。
攻击带来的502,恢复时长和攻击持续时间挂钩。DDoS打满带宽,或是CC攻击耗尽应用层连接,防护未生效期间持续返回502。接入高防、CDN清洗流量后,几分钟到几十分钟恢复访问;如果攻击持续多天,防护策略需要持续调整,期间会反复出现短时502报错。
普通用户判断方式:连续刷新页面没有恢复,可以间隔五分钟重试。五分钟后依旧502,基本排除临时抖动。半小时无法打开,大多需要人工介入,单纯等待无法解决。页面时好时坏,间歇性弹出502,一般是资源瓶颈或者间断性故障,例如后端节点故障没有被完全摘除,或是数据库连接池偶尔占满。
缩短故障恢复时间依靠提前准备。监控告警需要在502出现第一时间通知运维,日志体系方便快速定位故障环节,配置自动重启、健康检查,回滚流程做到几分钟内完成。这些配置平时感受不到作用,故障发生时,能把恢复时长从几小时压缩到几分钟。