404 not found是服务器明确告诉你“这个地址当前没有对应资源”的状态码,但在访问量突增期间,大量出现的404既可能是后端或缓存扛不住导致资源加载失败,也可能是重写规则、发布路径、反向代理配置本身出错。区分两者的关键不是看404数量,而是看它是否与访问量同步、是否集中在特定路径、以及压力回落后是否自动消失。
假设某站点为一次限时活动新增了落地页,平时日访问量稳定,活动开始后流量在几小时内明显上升。监控显示404数量同步上涨,同时接口响应时间变长。此时有两种解释:一是应用或缓存层达到资源上限,部分静态资源请求超时或被错误路由,返回404;二是新落地页的URL重写规则、CDN回源路径或发布目录写错,从上线起就持续产生404,只是流量小的时候没人注意。这两种情况的处理方向完全不同,下面用几个可观察证据来分开它们。
资源压力造成的404通常具有时间相关性:流量峰值出现时404上升,峰值过去后明显回落,甚至回到接近零。配置错误造成的404则更稳定,只要对应路径被访问就会触发,与并发量关系不大。可以做一个实际动作:在监控里把404按小时与请求总量叠加,如果两条曲线形状高度一致,优先怀疑资源压力;如果404在低流量时段也持续存在,优先检查配置。
需要注意,404数量归零不能单独证明配置已经正确,也可能只是该路径暂时没有流量进入。反过来,404数量高也不等于配置错误,可能是旧链接被大量外部引用。判断时要结合来源和路径分布。
把404按URL前缀和文件类型分组,往往能直接指向原因。资源压力常见的表现是图片、脚本、样式等静态资源在高峰时集中404,尤其是走同一缓存或同一后端服务的资源;配置错误则常表现为某一批新路径整体404,例如活动目录下的所有页面,或带特定参数的重写结果。可以用下面的清单快速分类:
这个动作的结果会直接影响下一步:如果集中在配置相关路径,应先回滚或修正规则;如果集中在压力相关资源,应先扩容、限流或修复缓存,而不是改重写规则。
在流量回落到正常水平后,用低并发直接请求那些曾大量404的URL。如果此时返回正常内容,说明配置本身能工作,之前的问题更偏向资源压力或临时状态;如果仍然404,说明配置或发布状态确实有误。这个复现要记录请求的完整路径、请求头和返回码,避免只凭浏览器缓存判断。
假设复现时裸路径正常、带参数的路径404,而参数是活动页用来区分渠道的,那么问题可能出在参数被错误地当成路径的一部分。此时修正参数处理规则,再观察同一批URL是否恢复,就能验证判断。这个假设例子说明的是比较方法,不是真实项目结论。
如果404出现在搜索引擎抓取日志里,还要排除一种情况:robots.txt限制了部分抓取,但这不等于索引移除,也不代表这些URL在站内真的不存在。站点地图同样不保证收录。遇到抓取相关的404时,应分别核查不同搜索引擎的支持情况和日志含义,而不是把抓取限制当成404的成因。
另外,HTTPS不保证安全无漏洞或排名,也不能用来解释404。判断仍然回到路径、时间和压力三个维度。
面对突增期间的404,建议按以下顺序处理:
这样做的原因是:资源压力下的404往往会在压力解除后消失,如果先改配置,可能把原本正确的规则改坏,反而掩盖真正的问题;而配置错误不会因为扩容而消失,先止损只是争取时间,最终仍要回到规则本身。把这两类原因分开之后,下一步无论是扩容还是修配置,都有明确的验证标准。