Files
getDomain/docs/当前已验证有效的线上参数与改动清单.md

6.3 KiB
Raw Permalink Blame History

当前已验证有效的线上参数与改动清单

说明:这份文档保留作阶段留档。后续执行和观察,统一以 当前线上最终Runbook.md 为准。

最后更新2026-04-25 17:30 左右
适用节点:mainland-controller-01
目标:给后续观察和继续优化留一个“当前已经验证有效”的固定基线,不再靠聊天记录回忆。

1. 当前线上基底

  • 当前 current 指向: /opt/domaincheck/releases/domaincheck_release_20260424_220158
  • 当前核心服务状态:
    • domaincheck-worker.service = active
    • domaincheck-sync-agent.service = active
    • domaincheck-api.service = active

说明:

  • 这台机器现在不是只跑旧 release 原样代码,而是“220158 基底 + 多轮热补”。
  • 后续如果要正式固化,应该把当前热补内容重新打一版正式 release。

2. 当前已确认生效的远端环境参数

以下参数已经在运行中的 detect_worker.py 进程环境里确认过,不是只改了文件没重启:

单机性能/爱站相关

  • DOMAINCHECK_REGISTER_SINGLE_MACHINE_MODE=1
  • DOMAINCHECK_SINGLE_MACHINE_AIZHAN_DIRECT_FIRST=1
  • DOMAINCHECK_AIZHAN_REMOTE_DISCONNECT_DEGRADE=1
  • DOMAINCHECK_AIZHAN_EXTERNAL_FAST_DEGRADE=1
  • DOMAINCHECK_PROXY_STEP_MAX_ATTEMPTS_AIZHAN=2
  • DOMAINCHECK_PROXY_STEP_MAX_SECONDS_AIZHAN=10
  • DOMAINCHECK_AIZHAN_TIMEOUT_PROXY=1.8
  • DOMAINCHECK_AIZHAN_TIMEOUT_DIRECT=2.4

Wayback 相关

  • DOMAINCHECK_PROXY_STEP_MAX_ATTEMPTS_WAYBACK=2
  • DOMAINCHECK_PROXY_STEP_MAX_SECONDS_WAYBACK=8
  • WAYBACK_CDX_TIMEOUT=3
  • WAYBACK_SNAPSHOT_TIMEOUT=2
  • WAYBACK_RETRY_COUNT=1
  • WAYBACK_DOMAIN_CONCURRENCY=1
  • WAYBACK_MAX_RECORDS=2
  • WAYBACK_TRANSIENT_BACKOFF_SECONDS=0.5

3. 当前已确认上线的代码改动方向

这些不是“计划中”,而是已经热补到 mainland-controller-01 并跑起来的:

调度/分发侧

  • 预补货提前触发,不再等批次快空了才补。
  • 预补货时不让拿到锁的那个 worker 先独吞下一批任务。
  • pipeline 推进和主动 pull_tasks 做了共享锁,减少 60 个 worker 同时拆批次。
  • session_replaced -> queued_before_start 这条重复唤起链已经加护栏压住。
  • claim / finalize / release 这些本地 DB 重链做过多轮减重,分钟级长尾已经明显掉下来。

注册/站点检测侧

  • 注册检测保留单机性能模式。
  • 百度、360、爱站都已经不再停留在过于激进的超时口径。
  • 爱站 已经补到:
    • 单机模式下首轮可直连优先
    • RemoteDisconnected 可直接降级
    • 现在又进一步支持“外部依赖异常快速降级”,不再把整轮预算白白耗完

Wayback 侧

  • wayback 已经从“自己 backoff 把自己打死”收住。
  • 当前远端新版逻辑里:
    • latest_cdx transient 时,不再硬打额外的 records_cdx
    • backoff 已收短到 0.5s
    • 当前剩下主要是 web.archive.org 本身慢/拒绝连接

4. 这轮真正验证出来的效果

下面这些是已经实测到的,不是预估:

4.1 机器确实吃起来了

较早一轮稳定快照里,mainland-controller-01 已经出现:

  • 60 个节点全在线
  • 53 个子 worker 的 active_threads > 0
  • active_thread_count = 13531

后续观察里,最近 2 分钟也长期能看到:

  • 59 个 fresh worker
  • 大约 51 ~ 56 个 worker 有真实线程数大于 0
  • 真实线程总和大约在 3.8 万 ~ 4.2 万

这说明当前不是“进程活着但没吃活”,而是确实在跑。

4.2 内存高位问题先被压下来了

滚动重启并替换旧 RSS 后,现场有过一轮明显回落:

  • Mem used ≈ 31Gi
  • available ≈ 93Gi
  • 60 个 worker 总 RSS 约 23.9Gi

说明“旧 RSS 不退”这层已经不是最早那种危险状态。

4.3 爱站与 Wayback 的尾部外部链,已经从“卡住不产出”变成“持续产出”

观察窗:2026-04-25 17:17:1817:29:23

  • completed_total: 50786 -> 51298,净增 512
  • aizhan_completed: 7718 -> 7936,净增 218
  • wayback_completed: 3068 -> 3362,净增 294
  • 这段窗口里:
    • aizhan_failed = 0
    • wayback_failed = 0

这个结论很重要:

  • 现在已经不是“压住 failed但 completed 不动”
  • 而是“failed 压住了,同时 completed 也在持续增长”

4.4 爱站快速降级这刀确实有作用

更早一段观察里,爱站 failed 还是会堆。
在把 DOMAINCHECK_AIZHAN_EXTERNAL_FAST_DEGRADE=1 灰到远端后,后面的观察窗里:

  • aizhan_failed 被压到 0
  • aizhan_completed 持续增长

这说明当前主链里,对爱站这类外部依赖异常,“快速降级继续”是有效的。

5. 当前怎么理解这些数字

当前最应该盯的不是:

  • 单次 claimed
  • 单次 pending
  • 某一个瞬间的 running

因为这是 domain_pipeline,前一步跑完会继续生成下一步,数字天然会波动。

当前更应该盯的是:

  1. completed_total 是否持续增长
  2. aizhan_completed / wayback_completed 是否持续增长
  3. aizhan_failed / wayback_failed 是否继续维持低位

如果这三组数继续保持当前趋势,就说明这套配置是对的。

6. 当前不要再乱动的东西

在下一轮更长观察结束前,建议先不要再继续频繁改:

  • worker 进程数
  • 每进程线程上限
  • claim / backlog 批量参数
  • wayback / 爱站超时参数

原因很简单:
现在已经进入“参数开始生效、completed 在涨”的阶段,再频繁动,会把已验证有效的窗口打碎。

7. 下一步建议

当前建议先停手观察,不再继续大改参数。

优先做两件事:

  1. 继续观察更长窗口
    建议至少再看 30 ~ 60 分钟,确认:

    • completed_total 继续增长
    • aizhan_completed / wayback_completed 继续增长
    • aizhan_failed / wayback_failed 不重新抬头
  2. 之后再做正式固化
    把当前这些热补过的代码和远端有效参数,整理进正式 release避免后续机器重启或重新发版时丢失。

8. 当前一句话结论

这轮已经验证到:当前 mainland-controller-01 上这套“单机性能模式 + 外部依赖快速降级继续”的组合是有效的,主链已经从“线程忙但不出结果”切到“线程忙,同时持续产出 completed”。