CRS 内部控制台

域名限速crs.tongsou.com

最终保险。调度器已在出队时限速,但入口 B、C 不经过调度器的出队路径。

这一层不是重复限速

DEV-downloader-v1.md §四 · downloader:domain_runtime:{domain} · 唯一写入方 下载器

counter计数器 owner写入方 covers管住哪条路径 role角色
scheduler:domain_runtime调度器 出队路径(入口 A 的来源)主控
downloader:domain_runtime下载器 全部三个入口,包括绕过调度器的入口 B 与 C保险

⚠️ 两个计数器独立、不同步、故意重复,不是同一份数据。两边数字对不上是设计如此,不是 bug。这一层的作用是堵住入口 B 这条绕过路径 —— 少了它,采样器和下游可以绕过调度器的限速直接打目标站。

⚠️ 本表后缀是 _runtime:最高频写入,可丢失重建。丢了最多让某个域名多等一个间隔,不影响正确性。

当前状态

近 24 小时 · 覆盖域名指本服务发起过请求的域名

domain count覆盖域名数
128,540
in_flight_count进行中请求合计
37
max_concurrent_count总并发上限
64
24h 限速触发
1,341

⚠️ 触发 1,341 次 / 请求 384,545 次 = 0.35%。限速几乎不触发是正常的 —— 到 10 万域名规模,绝大多数域名早已过了 min_interval_ms,瓶颈彻底转到渲染 CPU。见抓取统计页的两侧上限对照。

⚠️ max_concurrent_count唯一的成本刹车,必须能在线调。加机器能让吞吐线性涨到磁盘为止,没有这个闸门就没有别的地方能踩住成本。

域名逐条

downloader:domain_runtime:{domain} → {last_request_at, in_flight_count}

domain域名 min_interval_ms最小请求间隔(毫秒) source间隔来源 last_request_at最后一次请求时间 in_flight_count进行中请求数 24h requests24h 请求数 state状态 actions操作
news.example.tw1,000lease 消息 2026-08-15T07:47:52Z34,182 正常 抓取 · 探针
shop.example.jp2,000lease 消息 2026-08-15T07:47:51Z12,044 正常 抓取 · 探针
docs.example.cn1,000lease 消息 2026-08-15T07:47:49Z23,610 正常 抓取 · 探针
blog.example.com1,000全局默认 2026-08-15T07:47:44Z0318 入口 B 超限 抓取 · 探针
m.example.hk1,500lease 消息 2026-08-15T07:45:58Z096 正常 抓取 · 探针

⚠️ 第四行 min_interval_ms 来源是全局默认,说明这条请求走的是入口 B 且调用方没带值。入口 A 的值一定来自 lease 消息 —— min_interval_ms 必须下发,否则本层节流只能用全局默认值,称不上限速保险。

⚠️ min_interval_ms 由采样器算好,已取 crawl_delay 与语种默认值的较大者。调度器、下载器一律直接用,禁止再取一次 max。本页不提供调小的操作 —— 调小等于绕过对方 robots 里的 crawl_delay

⚠️ 本页的「状态」是限速状态,不是 domain_health_status。域名可用性熔断在调度器,scheduler:domain_health_runtime 唯一写入方是调度器,本页拿不到也不推断。

超限时各入口的行为

三个入口的超限响应不同,这是刻意的

entry入口 behavior超限行为 24h count24h 次数 why为什么这样
A · lease 循环延迟执行1,204 任务已经租下来了,丢掉要等 lease 超时才回收,等一下更便宜
B · POST /v1/render429 + retry_after_seconds96 同步接口,调用方能自己退避
C · POST /v1/probehas_reached_origin = false41 不返回 429。探针被我方自己的限速挡住,不是对方的问题

⚠️ 最后一行是整个接口最重要的一处。has_reached_origin = false 时调度器不退避、不计探针次数。少了这个区分,我方一抖,全库暂停域名的恢复时间集体翻倍 —— 故障范围被自身放大到全库。