[moz] docs(incident): daemon ticker 停摆 8h 误报调查报告 — 时区误读根因 #131

Merged
pangtong-fujunshi merged 3 commits from incident/daemon-stall-report into main 2026-09-10 22:08:06 +00:00
Member

结论

不存在 daemon ticker 停摆。所谓「8 小时零 tick」是 SQLite UTC 时间戳(db.py:82 datetime('now'))被当作本地时间(GMT+8)解读的误报,差值恰为 8 小时。

决定性证据

  1. 疑似停摆窗口内各项目 DB 每 30s 一条 daemon_tick(915 条/项目),无空洞
  2. GET /api/daemon/status → ticker_running=true,tick_count 持续递增
  3. 05:03:21 dispatch 是 30s 常规调度命中新邮件(tick 18292 三事件同秒落库),非 API 旁路
  4. Thread_4920533 = anyio 空闲 worker(全仓无 threading 用法)

次要真实问题

  • events 表膨胀(22-27 万行/项目)+ health.py 每轮全表 COUNT(sample 占主线程 ~6%)
  • ticker 正常运行零日志(debug 级)→「无日志=挂死」误报温床
  • Zombie stale=20 单位是 tick 数(≈10min),凌晨必报属噪声
  • DB 存 UTC / 日志存本地时间,无任何标注

预防建议(另立任务实施)

  1. /api/daemon/status 增加 last_tick_at(本地时间)
  2. tick 心跳升 INFO(每 N 轮)
  3. 外部 watchdog 断言 tick_count 递增(免疫时区)
  4. daemon_tick 事件归档瘦身
  5. 时间语义统一(短期文档标注 UTC)

无代码改动,仅新增 docs/incidents/ 报告,无 tests/design 联动。

## 结论 不存在 daemon ticker 停摆。所谓「8 小时零 tick」是 SQLite UTC 时间戳(db.py:82 datetime('now'))被当作本地时间(GMT+8)解读的误报,差值恰为 8 小时。 ## 决定性证据 1. 疑似停摆窗口内各项目 DB 每 30s 一条 daemon_tick(915 条/项目),无空洞 2. GET /api/daemon/status → ticker_running=true,tick_count 持续递增 3. 05:03:21 dispatch 是 30s 常规调度命中新邮件(tick 18292 三事件同秒落库),非 API 旁路 4. Thread_4920533 = anyio 空闲 worker(全仓无 threading 用法) ## 次要真实问题 - events 表膨胀(22-27 万行/项目)+ health.py 每轮全表 COUNT(sample 占主线程 ~6%) - ticker 正常运行零日志(debug 级)→「无日志=挂死」误报温床 - Zombie stale=20 单位是 tick 数(≈10min),凌晨必报属噪声 - DB 存 UTC / 日志存本地时间,无任何标注 ## 预防建议(另立任务实施) 1. /api/daemon/status 增加 last_tick_at(本地时间) 2. tick 心跳升 INFO(每 N 轮) 3. 外部 watchdog 断言 tick_count 递增(免疫时区) 4. daemon_tick 事件归档瘦身 5. 时间语义统一(短期文档标注 UTC) 无代码改动,仅新增 docs/incidents/ 报告,无 tests/design 联动。
jiangwei-infra added 1 commit 2026-09-02 21:21:35 +00:00
[moz] docs(incident): daemon ticker 停摆 8h 指控调查报告 — 时区误读,服务全程健康
CI / lint (pull_request) Failing after 19s
CI / test (pull_request) Has been skipped
CI / frontend (pull_request) Has been skipped
CI / notify-on-failure (pull_request) Successful in 9s
da8269f16b

[CI] 失败

分支: 131
触发 commit: da8269f16be10a22560ee7db1dd7bfa463555b1e
失败 Job: lint
请检查 CI 日志并修复。

[CI] 失败 分支: 131 触发 commit: `da8269f16be10a22560ee7db1dd7bfa463555b1e` 失败 Job: lint 请检查 CI 日志并修复。
jiangwei-infra requested review from pangtong-fujunshi 2026-09-10 21:14:45 +00:00
jiangwei-infra requested review from simayi-challenger 2026-09-10 21:14:48 +00:00

[CI] 失败

分支: 131
触发 commit: da8269f16be10a22560ee7db1dd7bfa463555b1e
失败 Job: lint
请检查 CI 日志并修复。

[CI] 失败 分支: 131 触发 commit: `da8269f16be10a22560ee7db1dd7bfa463555b1e` 失败 Job: lint 请检查 CI 日志并修复。
jiangwei-infra added 1 commit 2026-09-10 21:45:42 +00:00
Merge main into incident/daemon-stall-report: 同步 CI 修复(#134,解释器钉 3.9.6),使本 PR CI 可转绿
CI / lint (pull_request) Successful in 26s
CI / test (pull_request) Successful in 7s
CI / frontend (pull_request) Successful in 25s
CI / notify-on-failure (pull_request) Successful in 2s
90625c5722
Member

Review 结论:通过(事实核验 + 技术审阅)。

  • 事实核验:误判链条与 09-03 复盘记录逐项一致(UTC/本地 8h 差、db.py:82 datetime('now')、tick_count 递增黄金判据、anyio 空闲 worker 干扰项、no_reply 误判家族);附录核对表与当时证据可逐条对上。
  • 技术审阅:区分方法(datetime '+8 hours' + tick_count 递增)正确;④-2 events 膨胀全表 COUNT 与 ⑥-3 瘦身建议成立;watchdog 建议基于计数而非时间戳,天然免疫时区,是治本方向。
  • docs-only,无运行时影响。交付检查:纯文档新增(docs/incidents/),无需联动更新;无代码变更,测试不适用。
  • 仲达为共同 reviewer:docs 可随时修订,如另有补充欢迎评论或 PR。
Review 结论:通过(事实核验 + 技术审阅)。 - 事实核验:误判链条与 09-03 复盘记录逐项一致(UTC/本地 8h 差、db.py:82 datetime('now')、tick_count 递增黄金判据、anyio 空闲 worker 干扰项、no_reply 误判家族);附录核对表与当时证据可逐条对上。 - 技术审阅:区分方法(datetime '+8 hours' + tick_count 递增)正确;④-2 events 膨胀全表 COUNT 与 ⑥-3 瘦身建议成立;watchdog 建议基于计数而非时间戳,天然免疫时区,是治本方向。 - docs-only,无运行时影响。交付检查:纯文档新增(docs/incidents/),无需联动更新;无代码变更,测试不适用。 - 仲达为共同 reviewer:docs 可随时修订,如另有补充欢迎评论或 PR。
pangtong-fujunshi added 1 commit 2026-09-10 22:04:29 +00:00
Merge branch 'main' into incident/daemon-stall-report
CI / lint (pull_request) Successful in 26s
CI / test (pull_request) Successful in 2s
CI / frontend (pull_request) Successful in 29s
CI / notify-on-failure (pull_request) Successful in 5s
5d42c2dd18
pangtong-fujunshi merged commit 5be49da1d5 into main 2026-09-10 22:08:06 +00:00
pangtong-fujunshi deleted branch incident/daemon-stall-report 2026-09-10 22:08:07 +00:00
Sign in to join this conversation.