结论先说:如果错误只在特定时段出现,优先做“本地持续采样+服务端原始日志留存”,而不是先改配置或反复刷新页面。因为短暂故障的复现窗口往往只有几分钟,人工观察几乎必然错过;而配置变更会污染现场,让后续无法判断原始诱因。只有在确认采样工具本身不会引入新的资源竞争时,这套做法才成立。
面对间歇性错误,常见的两条路是:被动等待复现和主动持续采样。它们不是谁更高级,而是适用条件不同。
判断依据很直接:如果错误时段与访问高峰重合,采样点必须放在另一台机器或另一个网络出口;如果你只有一台服务器,采样脚本写在本机就只能记录到“本机还活着时”的状态,一旦整机资源耗尽,日志会断在故障前一刻。
间歇性错误的关键不是“记录得多”,而是记录到能与时间对齐的三类信息:
一个假设例子:某站点每天 21:00 前后出现无法访问,采样脚本每 30 秒请求一次首页并记录耗时。结果发现 21:00 到 21:04 之间连接耗时从 200 毫秒跳到 8 秒以上,而解析结果不变。这个对比说明瓶颈更可能在空间侧连接处理,而不是域名解析;下一步就该去看该时段的空间资源占用,而不是去改 DNS。注意这只是说明比较方法的假设,不是真实项目结论。
上述“先采样、后改配置”的建议,在一种情况下会失效:错误由采样行为本身触发。如果你的采样频率过高,或者采样点与被观测站点共享同一出口带宽,采样请求可能加重负载,让原本偶发的错误变成规律性错误。此时你记录到的“规律”是采样造成的,不是原始故障。
识别方法:把采样频率降低一半再跑一个周期。如果错误时段和频率随之改变,说明采样在干扰现场;如果错误依旧出现在同一时段,采样干扰的可能性就较低。这个反例提醒你,任何“归零”或“突增”现象都不能单独证明原因,还要排除采样工具、日志轮转、缓存刷新等合理解释。
采样跑完一个完整周期后,不要急着下结论,先把证据落成三份可复查材料:
然后做一次对照:把故障时段的记录与正常时段并排看,找出唯一变化的那个量。这个动作的结果决定下一步——如果变化的是解析结果,就去核查域名解析配置;如果变化的是连接耗时而解析稳定,就去核查空间侧资源与网络出口。只有把变化量缩小到一个,后续修改才有可验证的基准,否则你只是在多个变量之间来回猜测。