先给结论:如果异常只在特定时段出现,优先做“持续低频采样 + 时间戳对齐”,而不是等到变慢时再手动打开工具测一次。手动测量适合确认现象,不适合捕捉短暂证据,因为等你发现变慢、打开工具、选好页面,异常可能已经过去。假设有一个内容站,工作日 20:00 到 22:00 的移动端首屏明显变慢,白天正常,下面用这个情境说明怎么取舍。
两种做法都合理,但成立条件不同。守在现场适合异常持续时间较长、你能稳定复现、并且需要马上观察资源瀑布的场景。它的代价是人力被绑住,而且你看到的那一次不一定代表整个时段。
自动采样适合异常短、出现时间有规律、但每次只持续几分钟的场景。代价是你拿不到完整的交互细节,只能先拿到时间序列,再决定是否补一次现场测量。对上述假设情境,晚高峰每天出现,说明更适合先布采样,把 19:30 到 22:30 覆盖住,而不是每天靠人守着。
实际动作:在监控里对同一个 URL 每 5 分钟发起一次移动端测量,记录开始时间、地区、网络类型、首字节时间、最大内容绘制和总加载时间。结果如何影响下一步:如果 20:00 后多项指标同时抬升,下一步查服务端和第三方资源;如果只有总加载时间抬升,而首字节时间平稳,下一步优先查前端资源和网络链路。
短暂证据最容易丢在“没有时间戳”和“条件不一致”上。每次采样至少保留以下字段:
这些字段的作用不是堆数据,而是让你在事后能回答“变慢发生在哪个环节”。如果两次采样条件不同,比如一次是冷启动、一次是热缓存,就不能直接比较。假设 20:05 的首字节时间从 300 毫秒升到 1.2 秒,而 20:10 又恢复正常,这个短峰就值得单独查服务端日志,而不是归因到页面本身。
晚高峰变慢常见原因不止一个,可以用下面这组证据区分:
注意,请求量或抓取量在某个时段归零,不能单独证明处理正确。它也可能是采样失败、监控节点被限流、页面被临时下线,或者统计口径变化。要结合状态码和相邻时段的采样一起看。
实际动作:把晚高峰采样按“首字节时间是否抬升”分成两组,再分别对照服务端日志和 CDN 日志。结果如何影响下一步:如果首字节时间抬升且日志里出现慢查询,下一步查数据库;如果首字节时间平稳而资源下载慢,下一步查 CDN 和第三方脚本。
如果异常每天固定时段出现,先采样更稳,因为你有机会拿到连续几天的对照。代价是修复被推迟,用户仍会受影响。如果异常已经影响转化,且你有一个低风险的回退开关,可以先回退再采样。代价是回退后异常可能消失,你失去现场证据,只能靠回退前后的监控对比推断原因。
假设上述内容站在 20:00 到 22:00 的移动端首屏变慢,但白天正常。可以先保留采样,同时把晚高峰的第三方脚本改为延迟加载,观察首字节时间和最大内容绘制是否分离。如果分离,说明问题在第三方资源;如果没有分离,说明瓶颈仍在服务端。这个动作的结果直接决定下一步是继续查前端还是转查后端。
捕捉短暂证据的关键不是一次测得多准,而是让每次测量都能被复查。建议把同一时段的采样、服务端日志、CDN 日志和发布记录放在同一条时间轴上,至少保留到异常不再出现后的一个完整周期。这样即使异常只出现几分钟,你也能回答三个问题:它什么时候开始、影响了哪些环节、下一次出现时该先查哪里。
如果异常只在特定时段出现,先布持续低频采样,再用首字节时间是否抬升来分流排查方向,通常比守在现场更可靠;只有当异常已经造成明显业务影响且你有低风险回退手段时,才先回退再补证据。