先给结论:访问量突增时出现404,不能只看数量判断。资源压力通常表现为间歇性、随并发升高而增多,且同一URL有时200有时404;配置错误则更稳定,往往集中在特定路径、特定规则或某次变更之后。缺少日志或权限时,最小动作是抽取一组代表性URL,在不同时间、不同并发条件下重复请求,记录状态码与响应头,再决定下一步查资源还是查配置。
选一个当前报404的URL,同时选一个正常返回的URL作为对照。对每个URL记录四项:请求时间、返回状态码、响应头中的服务器标识与缓存相关字段、以及该请求是否经过CDN或反向代理。若只能看到浏览器结果,至少用无痕窗口和直接访问源站IP两种方式各试一次。假设某商品页在高峰时段返回404,低峰时段返回200,这更像资源压力或上游超时后的错误映射;若该路径在低峰也稳定404,而其他路径正常,则优先怀疑重写规则、路由配置或文件确实缺失。
第一,看时间分布。资源压力造成的404常与并发峰值重合,峰值过后自行减少;配置错误不会因为访问量下降而消失。第二,看URL范围。配置错误通常成片出现,例如某一目录下全部404,或带特定参数的URL全部404;资源压力更可能随机命中不同页面。第三,看响应头与错误页特征。若404页面来自应用框架,且带有请求ID或上游超时痕迹,说明请求已进入应用层,问题可能在应用或后端;若404由Web服务器直接返回,且静态文件路径明显错误,则更接近服务器配置或文件部署问题。
假设某站点在促销开始后十分钟内404增多。抽取100个报404的URL,其中80个集中在/product/下,另外20个分散。低峰重试时,集中报404的仍全部404,分散的恢复200。此时可先处理/product/的路由或重写规则,而不是扩容。反过来,若低峰重试后大部分恢复,且404页面来自上游超时,才应检查应用并发、连接池或缓存层。
没有服务器日志时,仍可做三件事。第一,用curl -I对同一URL连续请求多次,观察状态码是否稳定;若在200与404之间跳动,记录跳动是否与请求频率相关。第二,检查最近一次部署或配置变更的时间点,与404开始出现的时间对比;时间接近不等于因果,但可作为缩小范围的线索。第三,向有权限的同事索取一段特定时间窗的访问日志,只要求包含状态码、URL、时间和上游响应时间,不必索取全量数据。拿到这段日志后,先按URL前缀分组,再按时间分组,通常就能看出集中与分散的区别。
若证据指向配置错误,下一步是回滚最近一次路由或重写规则变更,并在低峰环境用同一组URL复测。若复测后集中404消失,说明变更与问题相关,但仍需观察高峰时段是否复发。若证据指向资源压力,下一步不是直接扩容,而是先确认404是否由上游超时后的错误映射造成。可以临时提高上游超时阈值或减少非关键请求,再观察404是否随并发下降而减少。若减少,才考虑容量调整;若不减少,应回到配置与代码路径继续排查。
最后要记住:404数量归零不能单独证明处理正确,它也可能只是访问量下降或监控口径改变。robots.txt的抓取限制不等于可靠的索引移除,站点地图不保证收录,HTTPS也不保证安全无漏洞或排名。把观察对象、时间分布和URL范围三项证据固定下来,才能在访问量突增时做出可复核的判断。