Files
2026-03-09 17:07:25 +08:00

2.8 KiB
Raw Permalink Blame History

运维与排障手册(业务视角)

本文档聚焦两件事:

  • 出错时先看哪里。
  • 日志里的状态到底代表什么业务问题。

1. 先看什么(快速定位)

  1. 看运行日志(sync_log):
    • 重点关注 状态机流转reason=depends=[...]
  2. 看持久化数据库:
    • 重点字段:binding_statusactionstatuserror
  3. 对照状态机文档:
    • docs/state_machine.md
    • docs/node_state_definition.md

2. 阶段化排障

2.1 bind 阶段

常见表现:节点停在 S03/S04/S05/S13

  • S03(ABNORMAL):节点数据损坏或核心绑定异常。
  • S04(WARNING):自动绑定关闭、键缺失、歧义等不可自动处理情况。
  • S05(DEPENDENCY_ERROR):依赖节点不存在或依赖状态不正常。
  • S13(PEER_CREATING):对侧创建进行中,尚未提交完成。

典型日志:

  • reason=依赖项不满足 | depends=[company_id status=peer_creating -> not_normal]

业务解释:

  • 上游依赖还没进入 NORMAL,下游业务会被严格阻断。

2.2 create 阶段

常见表现:节点长时间停在 S13S10C

  • S13:已判定需要创建,但创建提交未完成。
  • S10CCREATE 异步执行中。
  • S12CCREATE 失败。

优先检查:

  • API 侧是否返回任务 ID 与成功回执。
  • 轮询参数(poll_max_retries / poll_interval)是否过小。

2.3 update 阶段

常见表现:节点进入 S08S12U

  • S08(PRECONDITION_FAILED):前置条件失败(如缺 data_id、依赖 ID 解析失败)。
  • S12UUPDATE 调用失败。
  • S14UPDATE 被 handler 降级为 NONE 并跳过。

优先检查:

  • update_direction 是否符合预期。
  • 目标节点是否具备 data_id

3. 常见配置误区与症状

  • auto_bind=false
    • 症状:MISSING 节点更容易进入 WARNING,不会走自动创建识别。
  • local_orphan_action=none + remote_orphan_action=none + update_direction=none
    • 症状:该类型会被整体跳过,常被误以为“配置没生效”。
  • load_mode=persisted_only
    • 症状:数据只来自持久化,不主动拉取新数据。
  • update_direction=none
    • 症状:不做 update,即使有差异也不会提交更新。

4. 推荐操作顺序

  1. 先用 run_profiles/preset/jsonl_to_jsonl.default.yaml 跑通基线。
  2. 再切到 run_profiles/*.local.yaml 做最小覆盖。
  3. 每次只改一类字段(比如只改 project 的依赖策略)。
  4. 改完看一次 sync_log,确认状态流转与预期一致。

5. UI 排障(可选)

  1. 启动:python -m ui.main --host 127.0.0.1 --port 8765
  2. 打开:http://127.0.0.1:8765
  3. 在“运行与日志”查看实时状态变化。
  4. 在“记录与数据库”检查节点状态与绑定记录。