答案取决于错误是否与外部访问同步:如果只在真实用户或爬虫到达时才出现,应当用持续采样保留现场;如果错误与访问无关、只是按时间表自行出现,应当先做对照探测缩小变量。选错方向,要么日志被噪声淹没,要么错过只出现几分钟的状态。
把现象拆成两类。第一类叫访问触发型:请求到来时才返回错误,没有请求时一切正常。第二类叫环境定时型:不论有没有请求,到了某个时段就变化,例如源站任务、证书续期脚本、CDN 配置刷新或第三方接口的限流窗口。两者的证据形态完全不同,前者要靠请求级记录,后者要靠定时探测。
区分方法很直接:在错误时段内,用一台不经过主要链路的主机直接请求目标资源,同时观察源站日志里有没有对应条目。若外部请求失败而源站完全没有记录,说明问题发生在到达源站之前;若源站有记录且返回异常,则问题在源站或其后端。这一步的结果决定后面是查链路还是查应用,不要跳过。
日志往往只保留结果,不保留当时的响应头、重定向链和耗时分布。要捕捉短暂证据,需要在错误可能出现的时段内主动发起探测并保存完整响应。
这里有一个实际动作:先连续探测 24 小时,再对比错误时段与正常时段的响应头差异。如果错误时段多出某个中间层返回的标记,下一步就应转向该中间层的配置检查,而不是继续在页面代码里找原因。反过来,如果两次响应头完全一致而只有状态码变化,重点就落在源站应用。
当错误与请求无关时,采样请求只会得到同样的结果,无法定位触发源。此时应改用对照法:在错误时段和正常时段各执行同一组检查,只改变一个条件。
假设某域名只在每天固定时段返回异常,而其他时段正常。可以先假设与定时任务有关,在任务执行前后各做一次探测;如果异常窗口与任务窗口重合,仍需排除同一时段的其他变更,例如证书检查或上游限流。重合只是线索,不是结论。
如果错误窗口短于几分钟,且外部表现与请求量相关,优先持续采样;事后日志通常来不及保留足够细节。如果错误窗口较长、且在没有访问时也能复现,优先对照探测,因为此时请求记录只会重复同一现象。
例外的情形是:错误只发生在特定来源的请求上,例如某个地区的解析结果或某类客户端的缓存行为。这时两种方法需要结合——用持续采样确认来源分布,用对照探测确认链路差异。只做其中一种,容易把来源问题误判为时间问题。
短暂证据的价值在于可复查。至少保留原始状态码序列、时间戳、请求所用的完整 URL 和当时的响应头。若涉及重定向,把每一跳都记下来,而不是只记最终地址。这样做的结果是,后续无论排查链路、应用还是缓存策略,都能回到同一份记录上比对,而不是凭印象复述。
需要提醒的是,抓取限制、站点地图提交或启用 HTTPS 都不能替代对这类时段性错误的直接观察;它们各自解决的是不同层面的问题。真正能推动判断的,仍然是在错误发生时留下的可对照记录。