先看返回状态码和响应时间是否同步恶化。如果突增流量下大量请求返回404,而服务器CPU、内存、连接数并未接近上限,更可能是配置错误;反过来,若404页本身加载缓慢、超时或返回5xx,则先按资源压力处理。两者可以同时存在,关键是找到哪一个先发生变化。
访问量突增时,404数量上升本身不说明问题。真正有区分力的是状态码的构成:404占比升高而5xx基本不变,通常指向URL规则、重写规则或缓存键配置出了问题;404与5xx同时上升,且响应时间拉长,更可能是后端或数据库扛不住。
具体动作:在监控里把突增时段按分钟切开,分别统计404、5xx、平均响应时间和P95响应时间。如果404曲线先于5xx和响应时间上升,配置错误的可能性更大;如果三者几乎同时抬升,资源压力是更合理的解释。这个动作的结果会直接决定下一步:前者去查配置变更记录,后者去查容量和限流。
自定义404错误页如果由应用动态渲染,它本身也要消耗资源。突增期间可以观察:404页的响应时间是否和正常页面一起变慢。
这里有一个容易误判的点:静态404页很快,不代表源站没压力,因为请求可能根本没到源站。必须确认404页是在哪一层生成的,否则会得出相反结论。
资源压力和配置错误在请求层面留下的痕迹不同,可以从三个维度看:
假设一次突增中,404集中在/old-path/前缀,且该前缀在当天有一次重写规则调整,那么优先怀疑配置。若404均匀分布、来源分散,且服务器连接数已接近上限,则优先扩容或限流。这只是说明比较方法的假设例子,不是实际项目结论。
确认原因后,自定义404错误页的处理方式有三种,各有前提:
选择哪一种,取决于404是“症状”还是“病因”。如果404只是资源压力下的次生现象,改404页不会解决根因;如果404页本身在放大压力,先把它剥离出去才有意义。
个别样本上成立的判断,放大到全量流量时可能不成立。例如抽样看几条404都返回正确状态码,不代表全量都正确;抽样看响应时间正常,不代表高峰期正常。边界在于:样本量、采样时段和请求分层是否覆盖了突增的真实形态。
另外要注意,请求量归零或404数量下降,不能单独证明处理正确。缓存命中、流量自然回落、上游限流都可能造成同样的现象。要结合配置变更记录和资源指标一起判断,而不是只看单一数字。
最后,robots.txt的抓取限制不等于可靠的索引移除,站点地图不保证收录。这些手段与当前问题相关时只能作为辅助,不能替代对状态码和资源配置的核查。