7.0 KiB
当前线上最终 Runbook
最后更新:2026-04-26 18:12 左右
适用节点:mainland-controller-01
这份文档的目标很简单:
后面不再靠聊天记录回忆,也不在多份文档里来回翻。
只看这一份,就知道:
- 当前线上到底跑在什么基线上
- 现在先看什么数
- 什么情况继续观察
- 什么情况才值得继续动刀
1. 当前结论
当前这套线上方案,已经从:
- 线程忙但不出结果
推进到了:
- 线程忙,同时持续产出
completed
所以现在的正确策略不是继续乱改参数,而是:
先稳住,先观察,确认这套已经验证有效的配置能不能持续出结果。
2. 当前线上基线
当前基底版本
current指向:/opt/domaincheck/releases/domaincheck_release_20260424_220158
说明:
- 当前不是纯旧 release 原样运行
- 真实线上状态是:
220158 基底 + 多轮已热补代码 + 已生效 env
当前服务状态
domaincheck-worker.service = activedomaincheck-sync-agent.service = activedomaincheck-api.service = active
3. 当前已确认生效的关键参数
这些参数是已经在运行进程环境里确认过的,不是只改了文件。
单机性能与爱站相关
DOMAINCHECK_REGISTER_SINGLE_MACHINE_MODE=1DOMAINCHECK_SINGLE_MACHINE_AIZHAN_DIRECT_FIRST=1DOMAINCHECK_AIZHAN_REMOTE_DISCONNECT_DEGRADE=1DOMAINCHECK_AIZHAN_EXTERNAL_FAST_DEGRADE=1DOMAINCHECK_PROXY_STEP_MAX_ATTEMPTS_AIZHAN=2DOMAINCHECK_PROXY_STEP_MAX_SECONDS_AIZHAN=10DOMAINCHECK_AIZHAN_TIMEOUT_PROXY=1.8DOMAINCHECK_AIZHAN_TIMEOUT_DIRECT=2.4
Wayback 相关
DOMAINCHECK_PROXY_STEP_MAX_ATTEMPTS_WAYBACK=2DOMAINCHECK_PROXY_STEP_MAX_SECONDS_WAYBACK=8WAYBACK_CDX_TIMEOUT=3WAYBACK_SNAPSHOT_TIMEOUT=2WAYBACK_RETRY_COUNT=1WAYBACK_DOMAIN_CONCURRENCY=1WAYBACK_MAX_RECORDS=2WAYBACK_TRANSIENT_BACKOFF_SECONDS=0.5
4. 当前已确认上线的代码方向
调度 / 分发侧
- 预补货提前触发
- 预补货时不再让补货 worker 先独吞下一批
pipeline推进和主动pull_tasks做了共享锁session_replaced -> queued_before_start这条重复唤起链已压住claim / finalize / release这些本地 DB 重链已经做过减重
外部步骤侧
- 注册检测保留单机性能模式
- 百度、360、爱站都不再是早期那套过于激进的超时口径
爱站当前已经具备:- 首轮可直连优先
RemoteDisconnected可直接降级- 外部依赖异常可快速降级继续
wayback当前已经具备:latest_cdxtransient 时不再硬打额外records_cdx- backoff 已收短
- 主要剩下
web.archive.org本身慢/拒绝连接
5. 当前已经验证出来的效果
5.1 机器已经真正吃起来
已观察到:
60个节点全在线- 多次快照里
51 ~ 56个 worker 有真实线程 - 真实线程和长期在
3.8 万 ~ 4.2 万
所以当前不是“进程活着但没干活”,而是确实在跑。
5.2 内存高位问题先被压下来
滚动重启释放旧 RSS 后,现场出现过一轮明显回落:
Mem used ≈ 31Giavailable ≈ 93Gi60个 worker 总 RSS ≈23.9Gi
说明“旧 RSS 不退”这层已经先被压住。
5.3 当前真正最重要的验证结果
观察窗:2026-04-25 17:17:18 到 17:29:23
completed_total: 50786 -> 51298,净增512aizhan_completed: 7718 -> 7936,净增218wayback_completed: 3068 -> 3362,净增294- 这段窗口里:
aizhan_failed = 0wayback_failed = 0
这说明:
- 现在已经不是“压住 failed,但 completed 不动”
- 而是“failed 被压住,同时 completed 持续增长”
6. 当前最该看的数
后面观察时,优先级固定按这个顺序:
completed_totalaizhan_completedwayback_completedaizhan_failedwayback_failedrunning / claimed / pending
顺序不要反过来。
原因:
claimed / pending在domain_pipeline下天然会波动completed才是最真实的产出
7. 当前正确的判断方法
7.1 什么叫“继续观察就行”
只要看到下面这种趋势,就先不要再改:
completed_total持续增长aizhan_completed持续增长wayback_completed持续增长aizhan_failed / wayback_failed维持低位或归零
这说明:
- 当前主链是通的
- 当前配置方向是对的
- 现在最应该做的是稳住,不是继续乱调
7.2 什么叫“又卡住了”
只有出现下面这些情况,才值得继续下刀:
情况一
completed_total 在 30 ~ 60 分钟窗口里基本不动
说明:
- 虽然线程在跑
- 但结果没有真正落地
情况二
aizhan_failed 或 wayback_failed 又明显抬头
说明:
- 当前“快速降级继续”的策略还不够稳
情况三
running 长时间很高,但 aizhan_completed / wayback_completed 不再增长
说明:
- 新的主瓶颈又出现了
8. 当前建议观察窗口
建议至少继续看 30 ~ 60 分钟。
正确做法:
- 记录一组起始值
- 每隔
10 ~ 15分钟看一次 - 至少看
3 ~ 4个点
不要只看一两个瞬间。
9. 当前先不要再碰的东西
在这轮观察结束前,先不要继续改:
- worker 进程数
- 每进程线程数
- claim 批量
- backlog 批量
- 爱站超时
- wayback 超时
- 其他步骤的重试窗口
原因很简单:
- 现在已经进入“开始稳定产出”的阶段
- 再频繁改参数,只会把已经验证有效的窗口打碎
10. 当前一句话执行原则
先稳住,先看 completed 能不能持续增长;只要结果还在持续出来,就先不要再乱改。
11. job 876 尾项释放的当前判断
观察时间:2026-04-26 18:12 左右
当前不是“又卡死了”,而是:
idx_detect_job_items_release_node_job还没转成valid=1- 但它已经稳定进入
index validation: scanning table - 最新验证进度已经到
229991 / 6197384
codex-job876-tail-watch.service 这条后台链当前是活的,而且在连续记进度:
18:09:51 -> 12672518:10:52 -> 16956418:11:52 -> 21006718:12:22 -> 227856
同时现场另外两组状态也正常:
job 876 = running- worker 已恢复到:
base=activetemplated=199node_agent=active
这次现场更准确的判断应该是:
- 已经从“卡住”切成“后台验证扫描中”
- 当前最合理的动作不是再人工乱动
- 应该继续让索引自己扫完
一旦 idx_detect_job_items_release_node_job 转成 valid=1,codex-job876-tail-watch.service 就会自动继续释放 876 的尾项。
12. 如果后面还要继续优化,下一刀顺序
只有在更长观察窗口里确认又卡住时,才按这个顺序继续:
- 先看
completed_total为什么不涨 - 再看
aizhan_completed / wayback_completed哪个先停 - 再决定是继续打外部链,还是回头查回写 / 聚合语义
不要一上来就回去改线程、claim、并发。