跳至正文
Anon Wallet

RAILGUN 运行状态 API

Anon 运行着一个监控器,用来检查其钱包所依赖的 Railgun 服务:PPOI 节点、Anon 自己的索引器、Subsquid、广播者和 Waku。监控器按链逐一复查,大约每 30 秒一次,并把结果作为一份小型 JSON 文档发布在公开的 URL 上。任何人都可以读取:钱包、仪表板、状态页和脚本。无需 API 密钥,也无需账户。

GET https://api.anon.inc/api/v1/railgun/liveness

这是 Anon 通过自己的监控器得出的独立视角。它不是 Railgun 官方状态,也绝不是“可安全交易”的信号。它不能告诉你什么列出了其局限。

测试版: 此 API 处于测试阶段。字段、枚举值和响应结构可能随时更改,恕不另行通知。没有通知期,也不承诺弃用或下线流程。请让你的客户端忽略未知的字段和值。见测试版状态。

属性 值
基础 URL https://api.anon.inc
身份验证 无
CORS 任意来源,不带凭据(GET、HEAD、OPTIONS)
状态 测试版:可能随时更改,恕不通知(测试版状态)
格式 JSON,schemaVersion 1(JSON Schema)
复查频率 大约每 30 秒一次;持续失败的来源,复查会更少
缓存 浏览器 15 秒,共享缓存 30 秒

请求从不触发探测;每个回答都来自已存储的快照。

快速开始

curl -i https://api.anon.inc/api/v1/railgun/liveness

响应包含报告及其缓存响应头:

HTTP/2 200
content-type: application/json; charset=utf-8
cache-control: public, max-age=15, s-maxage=30, stale-while-revalidate=30, stale-if-error=300
etag: "79d583eb71a37058"
access-control-allow-origin: *
access-control-expose-headers: ETag

将 ETag 通过 If-None-Match 发回,即可询问内容是否有变化。如果没有,响应为不带正文的 304 Not Modified:

curl -i https://api.anon.inc/api/v1/railgun/liveness \
  -H 'If-None-Match: "79d583eb71a37058"'

在浏览器中,普通的 fetch 即可从任意来源使用:

const response = await fetch("https://api.anon.inc/api/v1/railgun/liveness", {
  headers: { Accept: "application/json" },
  signal: AbortSignal.timeout(8000),
});
if (!response.ok) throw new Error(`liveness: HTTP ${response.status}`);
const report = await response.json();

每一行数据只在其自身的到期时间之内可信。展示之前,请用你的时钟逐行判断。没有可用证据的行为 unknown,超过有效期的行为 stale。两者都绝不能显示为健康:

const FIVE_MINUTES = 5 * 60 * 1000;
const CLOCK_SKEW = 30 * 1000;
const ACTIONABLE = new Set(["current", "catching-up", "degraded", "unavailable"]);

function effectiveStatus(check, now = Date.now()) {
  // Neither of these asserts anything that could go stale.
  if (check.status === "unmonitored" || check.status === "unknown") return check.status;
  // A status this client does not know is not evidence.
  if (!ACTIONABLE.has(check.status)) return "unknown";
  const observed = Date.parse(check.observedAt);
  const expires = Date.parse(check.expiresAt);
  // Missing, unparseable or inconsistent timestamps are not evidence either.
  if (!Number.isFinite(observed) || !Number.isFinite(expires)) return "unknown";
  if (observed > now + CLOCK_SKEW || expires <= observed) return "unknown";
  const stale = expires <= now || now - observed >= FIVE_MINUTES;
  return stale ? "stale" : check.status;
}

// Decide for yourself which chains count as mainnets.
const MAINNETS = new Set([1, 42161, 137, 56]);
const ppoi = report.checks.filter((c) => c.service === "ppoi" && MAINNETS.has(c.chainId));
console.log(ppoi.map((c) => `${c.chainId}: ${effectiveStatus(c)}`));

端点

GET https://api.anon.inc/api/v1/railgun/liveness

  • 无需身份验证,也没有参数。任何查询字符串都会被忽略。
  • HEAD 只返回响应头。OPTIONS 用于回应 CORS 预检请求。
  • 正文为 application/json; charset=utf-8,长度为几 KB。
  • 一次响应涵盖每条链上的每项服务。获取一次后自行筛选即可。

示例响应

下面是精简后的报告,包含五个检查项,数值仅为示例。真实报告会列出每条链上的每项服务。

{
  "schemaVersion": 1,
  "generatedAt": "2026-10-03T12:00:05.418Z",
  "checks": [
    {
      "service": "waku",
      "chainId": null,
      "status": "current",
      "reason": "responding",
      "observedAt": "2026-10-03T11:59:40.993Z",
      "lastSuccessAt": "2026-10-03T11:59:40.993Z",
      "expiresAt": "2026-10-03T12:02:10.993Z",
      "metrics": { "peers": 2 }
    },
    {
      "service": "ppoi",
      "chainId": 1,
      "status": "current",
      "reason": "synced",
      "observedAt": "2026-10-03T11:59:52.206Z",
      "lastSuccessAt": "2026-10-03T11:59:52.206Z",
      "expiresAt": "2026-10-03T12:02:22.206Z",
      "metrics": { "position": 139296, "head": 139296 }
    },
    {
      "service": "broadcasters",
      "chainId": 1,
      "status": "current",
      "reason": "responding",
      "observedAt": "2026-10-03T11:59:40.993Z",
      "lastSuccessAt": "2026-10-03T11:59:40.993Z",
      "expiresAt": "2026-10-03T12:02:10.993Z",
      "metrics": { "responding": 82, "monitored": 85 }
    },
    {
      "service": "indexer",
      "chainId": 1,
      "status": "catching-up",
      "reason": "behind",
      "observedAt": "2026-10-03T11:59:58.731Z",
      "lastSuccessAt": "2026-10-03T11:59:58.731Z",
      "expiresAt": "2026-10-03T12:02:28.731Z",
      "metrics": { "position": 26115307, "head": 26115332 }
    },
    {
      "service": "subsquid",
      "chainId": 137,
      "status": "unavailable",
      "reason": "unreachable",
      "observedAt": "2026-10-03T12:00:01.093Z",
      "lastSuccessAt": "2026-10-03T11:58:09.870Z",
      "expiresAt": "2026-10-03T12:02:31.093Z",
      "metrics": {}
    }
  ]
}
  • waku 行是共享的 Waku 检查,所以其 chainId 为 null。它的状态是 current,peers 是 Anon 所监控的 Waku 连接的节点数。
  • broadcasters 行是 current:Anon 在该链上监控的 85 个广播者中有 82 个有响应。monitored 是真实的分母。
  • ppoi 行处于最新状态。position 是 PPOI 节点已验证的 TXID 索引,head 是同一节点当前的索引。
  • indexer 行落后其参考值 25 个区块,超过了允许范围,因此报告 catching-up。
  • subsquid 行为 unavailable:Anon 的监控器连续三次探测都没有得到可用的回答。observedAt 是最近一次失败的探测,而 lastSuccessAt 保留了该服务上一次有响应的时间。失败不带任何指标。
  • 检查项目前按 waku、ppoi、broadcasters、indexer、subsquid 排序,各服务内按 chainId 升序。请勿依赖这一顺序。

字段

报告

字段 类型 含义
schemaVersion 整数 目前为 1。测试期间可能更改。
generatedAt 时间戳 快照的组装时间,而不是提供服务的时间。监控器存活期间,它至少每 30 秒推进一次。
checks 数组 每个服务和范围对应一个对象。每个服务与 chainId 的组合最多出现一次。

检查项

字段 类型 含义
service 字符串 目前为 ppoi、broadcasters、waku、indexer 或 subsquid。以后可能增加。
chainId 整数或 null 正的链 ID。目前 waku(一个共享检查)为 null。
status 字符串 如何处理这一行。见状态。
reason 字符串 这一行为什么是该状态。可能出现新的值。见原因。
observedAt 时间戳或 null 最近一次探测完成的时间。失败的探测同样算作一次观测。如果从未检查过或未被监控,则为 null。
lastSuccessAt 时间戳或 null 服务本身上一次有响应并完成比对的时间。之后即使失败也会保留。如果从未有过,则为 null。
expiresAt 时间戳或 null 这次观测不再有意义的时间。等于 observedAt 加上行的有效期,上线时为 150 秒。每个可操作状态(current、catching-up、degraded、unavailable)都会提供。
metrics 对象 测量值。始终存在,未知的键会被省略。

时间戳为 UTC,精确到毫秒,并以字面量 Z 结尾:YYYY-MM-DDTHH:mm:ss.sssZ。

指标

键 含义
position 服务自身的位置:ppoi 为已验证的 TXID 索引,indexer 和 subsquid 为已索引的区块。
head 用来比较的对象:PPOI 节点当前的 TXID 索引,或链的最新区块减去该服务自身的确认深度。
responding 有响应的广播者数量。与 monitored 一起设置,且不会超过它。
monitored 实际检查的广播者数量。这是真正的分母。
peers 被监控的 Waku 连接当前已连接的节点数。

可能出现新的键。请忽略你不认识的键。这里列出的每个指标都是不超过 2^53 − 1 的非负整数。未知的指标会被省略,绝不会用 0 填充,因此切勿把缺失的键当作零。未被监控的行是 "metrics": {}。

position 可能大于 head:参考链头按其自身节奏读取,可能最多滞后一分钟。请把落后量限制为不小于 0。

状态与原因

状态

以下是目前的状态。这不是封闭集合:在测试期间,状态值可能在不通知的情况下增加或改名。把你不认识的状态仅对该行当作 unknown。

状态 含义 处理方式
current 服务有响应,并已在允许范围内赶上其参考值。 展示为已有响应且已赶上,时间以 observedAt 为准。
catching-up 服务有响应,但落后其参考值的幅度超过了允许范围。 预期会有延迟。这不是故障。
degraded 服务有响应,但受到严重影响:长时间大幅落后,或只覆盖了应覆盖范围的一部分。 发出警告。不要在对时间敏感的工作中依赖它。
unavailable Anon 的监控器连续三次探测都没有得到可用的回答。 视为没有响应。
unknown 暂无可用证据,或证据无法安全地进行比较。 既不是好消息,也不是坏消息。不要显示绿色状态。
unmonitored Anon 不监控此检查项。 不是故障。显示为未覆盖。

超过其 expiresAt 的行,无论其状态如何,都已过期,宕机服务的行也可能以这种方式到达你手中。见新鲜度与缓存。

原因

原因 对应状态 含义
synced current 位置在其链头的允许范围内,或 PPOI 节点已验证到其自身当前的索引。
behind catching-up、degraded 位置落后其链头的幅度超过了允许范围。
responding current 用于没有可比较位置的服务:Waku 和广播者。
partial-coverage degraded 被监控的成员中只有部分有响应。用于广播者。
unreachable unknown、unavailable 探测无法连接或无法理解该服务。连续失败最多两次为 unknown,三次为 unavailable。
not-configured unmonitored Anon 不监控此检查项。
no-observation unknown 尚未有任何观测,或服务有响应但没有此链的数据。
incompatible-reference unknown 服务有响应,但其数字无法安全地进行比较。例如 PPOI 节点没有所需的列表,或用作参考的链头太旧。

原因同样不是封闭集合。请这样编写你的客户端:遇到不认识的原因时,只依据 status 行动。对 Waku 和广播者的监控仍可能带来新的原因。

阈值

这些是上线时的取值。它们属于监控策略,而不是 schema 的一部分,因此 Anon 可能在不更改 schema 版本的情况下重新调整。

规则 取值
复查 有响应的来源大约每 30 秒复查一次,另有最多 3 秒的抖动。持续失败的来源复查得更少:每连续失败一次,等待时间翻倍,先是 30 秒,然后 60 秒,上限为 2 分钟。
行有效期 150 秒:expiresAt 为 observedAt 加 150 秒。
故障 连续 3 次探测失败后为 unavailable。前两次为 unknown。
落后容差 只要落后量不超过 10 个区块与约 2 分钟区块数中的较大者,indexer 和 subsquid 就是 current。
降级 连续 2 次评估中落后 30 分钟或更多。
PPOI 落后 节点已验证的索引持续 45 秒落后于其自身当前的索引。
参考链头 用作参考的链头距今不得超过 60 秒,否则该行为 unknown,原因是 incompatible-reference。

服务与链

服务 Anon 检查什么 position head
ppoi 所配置的 PPOI 节点必须提供该网络所需的列表。将其已验证的 TXID 索引与同一节点当前的索引比较。 已验证的 TXID 索引 节点当前的 TXID 索引
indexer Anon 自己的索引器最后处理的区块,与链头减去索引器确认深度后的值比较。 最后处理的区块 扣除确认深度后的参考链头
subsquid 所配置的 Subsquid 部署已索引的高度,与链头减去该 squid 自身确认深度后的值比较。 已索引的高度 扣除确认深度后的参考链头
broadcasters 每条链:一组有限的广播者中有多少个有响应。自 2026-10-04 起监控。 — —
waku 对 Anon 所监控的 Waku 连接的一项共享检查。自 2026-10-04 起监控。 — —
  • 链。 被监控的主网为 Ethereum(1)、Arbitrum(42161)、Polygon(137)和 BNB Chain(56)。Sepolia(11155111)是测试网,从不计入主网汇总,也没有 Subsquid 部署,因此其 subsquid 行未被监控。更多链可能在不通知的情况下出现。
  • Waku 和广播者。 二者自 2026-10-04 起都已被监控,会报告真实状态,原因为 responding 或 partial-coverage,指标为 peers、responding 和 monitored。仍可能出现新的 reason 值和新的 metrics 键。请按测试版状态中的说明处理。
  • 参考链头。 链头来自公共 RPC 端点。它们没有自己的行。
  • 谁运行什么。 PPOI 节点和 Subsquid 部署并非由 Anon 运营。那里发生的故障,会显示为 Anon 对所配置部署的读数。

关于这些服务本身,请参阅 PPOI 代理、广播者网络和钱包同步。

新鲜度与缓存

监控器大约每 30 秒复查一次每个有响应的来源,并存储一份快照。每个请求都由内存中的这份快照回答。响应包含:

Cache-Control: public, max-age=15, s-maxage=30, stale-while-revalidate=30, stale-if-error=300
指令 作用
max-age=15 浏览器将其副本复用 15 秒。
s-maxage=30 共享缓存(例如 CDN)复用其副本 30 秒:即一次复查。
stale-while-revalidate=30 缓存可以在此之后再用过期副本响应最多 30 秒,同时去获取新副本。
stale-if-error=300 如果源站出错,缓存可以继续提供其副本最多 5 分钟。

一行数据最多会有多旧? 对于有响应的来源,一行数据在源站最多约 44 秒:30 秒的周期、3 秒的抖动、最长 10 秒的一次探测,再加 1 秒的发布时间。缓存最多再增加 60 秒(s-maxage 的 30 秒与 stale-while-revalidate 的 30 秒)。因此,一行健康的数据在被观测后最多约 104 秒到达你手中,仍在其 150 秒的有效期之内,所以到达时不应已经过期。

持续失败的来源复查得更少。 每连续失败一次,监控器再次尝试该来源之前的等待时间就翻倍:30 秒,然后 60 秒,上限为 2 分钟。加上抖动以及最长可达 10 秒的一次探测,宕机来源的一行数据在源站最多约 133 秒,到缓存把它交给你时最多约 193 秒。这已超过其 150 秒的有效期,所以 unavailable 的行可能在到达你手中时就已过期,此时它显示为已过期,而不是 unavailable。请把过期的行视为“没有近期读数”,绝不能视为健康。宕机的服务看起来可能正是如此。

新鲜度属于每一行,而不属于 HTTP。 当某行的 expiresAt 不晚于你时钟上的当前时间,或其 observedAt 已满 5 分钟或更久时,无论其 status 如何,都应视为已过期。当某行其状态所需的时间戳缺失或无法读取,observedAt 比当前时间晚了超过约 30 秒,或 expiresAt 不晚于 observedAt 时,应将该行视为 unknown。200、304 或缓存命中都不会让一行续期。

监控器停摆。 监控器存活期间,即使所有探测都挂起,generatedAt 也至少每 30 秒推进一次。如果监控器停止,已存储的报告保持原样,其中的行会通过 expiresAt 自然过期。通过 stale-if-error 提供的副本也是如此。二者看起来都是已过期,绝不会显示为健康。

ETag 与 304。 ETag 是强验证器:由正文得出的带引号的 16 字符哈希。监控器在每次探测完成时发布,并且至少每 30 秒发布一次,而 generatedAt 是正文的一部分,所以 ETag 至少以这个频率变化。If-None-Match 使用弱比较,会忽略 W/ 前缀,* 可匹配任何值。304 带有 ETag、Cache-Control 和 CORS 响应头,没有正文。

HTTP 状态码与错误

状态码 何时出现 说明
200 快照。 服务不健康时也是如此:200 表示报告可读,而不是服务健康。
304 If-None-Match 匹配。 无正文。
204 OPTIONS 预检请求。 见 CORS。
405 其他任何方法。 Allow: GET, HEAD, OPTIONS。不缓存。
503 应答的服务器尚未加载第一份快照。 持续时间短,例如刚部署之后。不缓存。请退避后重试。
404 其他任何路径。 由网关返回。
429 你超过了合理使用中的速率限制:此路径上每个 IP 每分钟超过 120 个请求。 来自 CDN(Cloudflare 错误 1015),而不是 API。持续约 60 秒,Retry-After 约为 60。命中缓存的请求也会计数。

在此路由上,错误为 {"error": "<message>"},附带 Content-Type: application/json; charset=utf-8 和 Cache-Control: no-store:

{"error":"liveness report unavailable"}

请根据 HTTP 状态码分支处理,切勿依据消息文本。网关的 404({"message":"Not Found"})和 CDN 的 429 使用其他响应体:429 是 Cloudflare 的 text/plain 页面。

在浏览器中,429 是读取不到的。 CDN 的 429 页面没有 Access-Control-Allow-Origin,因此浏览器会将其拦截,fetch 会以 TypeError 拒绝,与其他网络或 CORS 故障无异。你的代码看不到状态码或 Retry-After。请把任何网络故障都当作 429 或 503 处理:退避,保留最近一次正常的报告,并让其中的行通过 expiresAt 自然过期。

加载第一份快照之后,故障绝不会产生 503。服务器会继续提供最后一份快照,其中的行会通过 expiresAt 自然过期。

CORS

该报告是公开的,不包含因调用者而异的内容,所以每个响应都允许所有来源:

响应头 值
Access-Control-Allow-Origin *
Access-Control-Expose-Headers ETag

每个应答(200、304、204、405 和 503)都会发送这些响应头,无论请求的 Origin 是什么。没有 Access-Control-Allow-Credentials。响应不会发送 Vary: Origin,但 CDN 仍会为每个 Origin 请求头的取值分别缓存一份副本,因此来自新来源的第一个请求可能是缓存 MISS。查询字符串会被忽略:带任意 ?x= 的请求会复用同一份副本。

预检请求(OPTIONS)的应答为 204,并带有:

响应头 值
Access-Control-Allow-Methods GET, HEAD, OPTIONS
Access-Control-Allow-Headers Accept, Content-Type, If-None-Match
Access-Control-Max-Age 86400

带有 Accept 头的普通 fetch 是简单请求,不需要预检。自行设置 If-None-Match 的脚本则需要预检,而该头是被允许的。

合理使用

  • 没有密钥,也没有 SLA。这是处于测试阶段、尽力而为的公共数据源。
  • 遵守 Cache-Control,并配合 ETag 使用 If-None-Match,让未变化的报告只花费一次 304。
  • 轮询间隔不要短于 15 到 30 秒。数据大约每 30 秒变化一次,更频繁的轮询只会拿到缓存副本。
  • 钱包应在用户打开依赖它的界面时再获取,而不是按定时器轮询。
  • 轮询的服务器应发送说明你身份的描述性 User-Agent,例如 my-wallet/1.4 (+https://example.com/contact)。
  • 每个 IP 对此路径的请求超过每分钟 120 次时会被限速,并在约 60 秒内收到 429。命中缓存的请求也会计数。遇到 429 和 5xx 时请退避。
  • 在浏览器中,429 表现为 CORS 或网络错误,而不是可读取的响应。请把任何网络故障都当作 429 或 503 处理:退避,保留最近一次正常的报告,并让其中的行通过 expiresAt 自然过期(参见 HTTP 状态码与错误)。

测试版状态

此 API 处于测试阶段,Anon 目前不对其稳定性作出任何承诺。

  • 可能随时更改。 字段、枚举值和响应结构可能在没有通知期的情况下被新增、改名、改类型或删除。Anon 不承诺弃用或下线流程,也不承诺提供 Deprecation 和 Sunset 响应头。
  • schemaVersion 可能改变。 /api/v1 是网关整个部署范围的路由版本,而不是本端点的版本。本端点自身的 schemaVersion 在正文中,目前为 1,它也可能改变。JSON Schema 刻意写得宽松,只描述当前的响应,并不是承诺。
  • 目前主机为 api.anon.inc。 以后可能增加 api.railscan.io 这样的别名,不承诺时间。
  • 变更记录。 变更会尽力记录在下方的变更日志中。

如何编写能够应对这些变化的客户端:

  • 忽略未知字段。 在每一层(报告、每个检查项和 metrics)都忽略未知的对象字段。
  • 不要依赖封闭集合。 对不认识的 status,仅对该行按 unknown 处理。对不认识的 reason,视为“无详情”,只依据 status 行动。忽略你不使用的 service 或 chainId 所在的行,也忽略不认识的 metrics 键。
  • 只让一行失败,而不是整份报告。 一行读不懂,不应让其他所有行都变成空白。
  • 检查 schemaVersion。 如果它不是你认识的值,结构可能已经改变。请把报告视为不可读,直到你完成更新,而不是自行猜测。

目前成立的情况。这是端点现在的行为,请正确处理,但这并不是承诺:

  • 指标。 每个检查项都有 metrics 对象,未知指标的键会被省略。未被监控的行为 metrics: {}。切勿把缺失的指标当作 0。
  • 每个范围一行。 每个服务与 chainId 的组合最多出现一次。waku 是唯一的共享行,其 chainId: null。不要不加判断地对各行求和。请用你自己的链白名单来决定哪些属于主网:Sepolia(11155111)从不计入主网汇总。
  • 新鲜度按行计算。 使用新鲜度与缓存中的规则。目前只有 unknown 和 unmonitored 行的 expiresAt 为 null。
  • 数字。 由于 position 可能超过 head,请把落后量限制为不小于 0。responding 绝不会超过 monitored。所有指标都是非负的安全整数。

它不能告诉你什么

  • 它不是 Railgun 官方状态。 它是 Anon 的监控器,从 Anon 的基础设施读取 Anon 所配置使用的服务。你看到的这些服务的情况可能与此不同。
  • 它不是“可安全交易”的信号。 ppoi 为 current,并不意味着某笔屏蔽已可花费,或某个证明有效。它只表示所配置的 PPOI 节点已验证到其自身当前的索引。它不涉及任何单个钱包的 PPOI 有效性、合规性或可用余额。
  • 广播者部分异常只是一个不完整的读数。 它表示被监控的广播者中有一部分没有响应。其他广播者或递送方式可能仍然可用。请在广播者网络中查看相应方式及其隐私限制。
  • Waku 的节点数不等于消息送达。 peers 统计的是 Anon 所监控连接的连接数。它并不能证明消息会到达广播者并返回。
  • 索引器和 Subsquid 的行不代表你的钱包同步状态。 它们表示这些服务是否已追平各自的链。你自己的钱包同步是另一回事。参见钱包同步。

历史

过去 14 天内,GET https://api.anon.inc/api/v1/railgun/liveness/history 会把相同的行以 5 分钟时间桶的形式返回,并附带 24 小时、7 天和 14 天的可用率。它是一个独立的端点,有自己的缓存,适合图表和状态页。见运行状态历史 API。要了解当下的真实情况,仍应使用本端点。

隐私

对此端点的请求不携带任何与你的钱包有关的信息:没有地址,也没有账户。Anon 和它前面的 CDN 仍会像对待任何 HTTPS 请求一样看到你的 IP 地址和 User-Agent。按定时器轮询的钱包,会以 30 秒的节奏显示该 IP 对 Railgun 的关注。如果你在意这一点,请按需轮询,或者由自己的服务器获取报告,再用这份缓存为你的用户提供服务。

变更日志

2026-10-04

现在 Waku 和广播者已被监控,它们的行会报告真实状态,而不再是 unmonitored。速率限制已开始执行:此路径上每个 IP 每分钟超过 120 个请求,将在约 60 秒内收到 429。

版本 1(测试版)

首次发布,处于测试阶段,不作稳定性承诺。schemaVersion 1。服务为 ppoi、indexer、subsquid、broadcasters 和 waku,覆盖 Ethereum、Arbitrum、Polygon、BNB Chain 和 Sepolia。Waku 和广播者已列出,但在发布时未被监控。每个检查项的有效期为 150 秒,监控器对有响应的来源大约每 30 秒复查一次(持续失败的来源复查得更少),响应可在共享缓存中缓存 30 秒。