mirror of
https://github.com/Wei-Shaw/sub2api.git
synced 2026-10-27 08:05:33 +00:00
OpsSystemLogSink 的 flush 没有任何失败退避:ticker 每 1 秒触发一次,每次都 带 5 秒超时打一批 COPY,失败后立刻在下一个 tick 再来一次。远程 PostgreSQL 上 COPY 被 context 取消会导致协议失步、连接被服务端 FATAL 终止,于是这条循环 变成持续的「占用连接 → 超时取消 → 销毁重建」;在 max_open 较小的连接池里, 日志通道会长期占满连接,业务侧最终报 Billing 503。 改为连续失败后指数退避(2s 起,翻倍,封顶 60s): - 退避窗口内直接丢弃当前批次并计入 dropped_count,不再触达数据库; - 任意一次成功立即清空失败计数与抑制窗口; - 失败日志随退避天然收敛为每个窗口至多一条,并附带 failures/backoff。 Fixes #5265