资讯文章 资讯 · NEWS
监控说你在线,用户说打不开:目录站的多地区拨测该怎么设
2026-10-23 约 1,260 字 预计阅读 3 分钟 yiyunkj
监
自建的那套监控(服务器探针、进程监控)回答的是「我的服务器活着吗」,用户关心的是「我在家里能不能打开」。这两件事之间隔着一整个网络:本地 DNS、运营商线路、省级出口、CDN 节点、TLS 握手。

图片来源:网络,版权归原作者所有,侵权请联系删除
拨测要覆盖的不只是地域
只按「华北华东华南」选点是不够的。真正的差异来自网络和运营商的组合,同一个城市里联通和移动的体验可能完全不同。
| 维度 | 建议覆盖 | 最少数量 |
|---|---|---|
| 大区 | 华北、华东、华南、西南 | 4 |
| 运营商 | 电信、联通、移动 | 3 |
| 接入类型 | 家宽、移动网络 | 2 |
| 协议 | HTTPS、HTTP | 2 |
全组合是 24 个配置,实际不用这么铺。优先保证每个大区 × 每个运营商至少有一个点,接入类型和协议的组合放在几个重点机器上交叉验证就够了。
国内大部分站点,六到九个拨测点已经有了足够的代表性。再往上加的成本不低,而新增信息很有限。
判定规则比拨测点更容易踩坑
最常见的问题是判定太敏感。只要有一次请求超时就告警,一个月下来收到几十条,人就麻了,真出事的时候那条告警也一并被忽略。
三层过滤:
- 单次不算——同一个节点连续两次探测失败才标记异常
- 单节点不算——至少两个不同运营商的节点同时异常才算「区域性故障」
- 短暂不算——持续超过两分钟才发告警
反过来也有一种极端:把阈值放得太松,真出事的时候半小时后才告警。宁可偶尔误报一次,也不要漏报。误报的成本是打扰一次,漏报的成本是整站挂了几百个小时没人知道。
判定「在线」要看什么
只看状态码不够。返回 200 但内容不对的情况太常见了:CDN 缓存了一版空页面、模板报错吐了半截 HTML、数据库连接失败但框架还在返回 200。
建议每次探测检查三样:
- 状态码——期望 200,非法跳转也要算异常
- 关键字——页面里必须包含某个固定串,比如分类栏上的某个文字
- 响应耗时——超过阈值单独记一笔,哪怕状态码正常
关键字这条最有用。它能抓住一大票「看起来正常实际坏了」的情况,包括被 CDN 缓存了错版本、页面主体是空的、以及某些注入攻击留下的痕迹。
出故障时怎么用它定位
拨测数据真正的价值在故障那一刻,平时看的价值不大。真出事的时候按这个顺序缩范围:
| 现象 | 指向 |
|---|---|
| 全部节点同时失败 | 源站、DNS 权威、证书 |
| 某运营商全线失败 | 该运营商的解析或链路 |
| 某大区失败 | CDN 区域节点 |
| 仅 HTTPS 失败 | 证书链、SNI、TLS 版本 |
| 只有家宽失败 | 本地 DNS 污染或劫持 |
最后一种在国内不算罕见,而且很难自查——用户打电话过来说打不开,你自己测一切正常。拨测点里一定要有家宽节点,尤其是面向普通用户的目录站。
拨测自己的三个陷阱
- 把拨测本身当成流量源:频率设太高会被自己的限流策略打掉,得到的全是 429。一分钟一次足够了。
- 只测首页:分类页、搜索接口、图片路径各测一个代表性地址,这些地方的故障率远高于首页。
- 拨测走公网但源站在内网:如果某些服务只打算内部访问,别把它们纳入公网拨测,否则会长期误报。
最后提醒一句:拨测结果不要当性能数据用。它测的是从拨测机到你站上的耗时,跟真实用户的体感有关系但不是一回事。衡量真实体验要看 CrUX 或者自建的 RUM 数据,前面几批已经讲过口径问题,这里不重复了。