docs: 记录 Sub2API 只读巡检
Pipelines as Code CI / hwlab-web-probe-sentinel-nc01- Success
Pipelines as Code CI / platform-infra-gitea-nc01- Failed
Pipelines as Code CI / unidesk-host- Success

This commit is contained in:
Codex
2026-07-15 13:42:46 +02:00
parent f75781c049
commit f704295264
2 changed files with 55 additions and 0 deletions
@@ -0,0 +1,52 @@
# R2.12 最近 2 小时 Sub2API 运维巡检报告
## 边界
本次只读使用 PK01 Sub2API 状态、原生 Ops 诊断、所有分组错误概要、分组账号评分和 request trace。未修改源码、版本、runtime、YAML、账号、外部哨兵或部署。
## 服务状态
- PK01 Sub2API `0.1.155` 健康运行约 19 小时,Redis 正常,本地 health 与 Caddy 正常。
- 所有分组合计 3061 请求、34 个客户错误,客户错误率 1.11%;可归因上游错误率 0.95%。
- OpenAI 总容量 225,查询时使用 5、队列 0;没有降低上游并发的证据。
- 原生前端投影提示两个 OpenAI 分组 TTFT 约 13.6-13.8 秒、健康分 61。近 1 小时盈利池 TTFT P95/P99 为 10.0/14.7 秒,自用池近 2 小时为 9.1/13.6 秒,无超过 180 秒的近期证据。
## 盈利池
近 1 小时 642 请求、10 个客户错误,客户错误率 1.25%,上游错误率 0.47%。10 个客户错误均未选中账号:
- 7 次请求未配置模型 `gpt-5.6`
- 1 次请求未配置模型 `gpt-5.4-nano`
- 2 次客户余额不足。
账号切号 1 次并成功,真实上游故障未穿透客户。账号质量:`https://sub.yjxm1221.top plus 0.025` 为 100/A`lyon9801 0.0` 为 99.9/A`https://ai.whistlelads.com plus 0.03` 为 95.2/A`https://sub.yjxm1221.top pro 0.06` 短窗 68.4/D,但只有 19 次尝试且 1 次切号已恢复,现有低优先级 50 无需追加调整。
当前 5 个账号因上游 `403 Insufficient account balance` 不可调度:`https://api.lwylink.xyz pro 0.1``https://api.lwylink.xyz plus 0.05``https://sub2.pokexiao.com plus 0.03``https://sub2.pokexiao.com pro 0.05``https://api.iceiu.com plus 0.011``iceiu` 的优先级 2 在余额恢复前不会产生调度收益。
## 自用池
近 2 小时约 1600 请求,仅 1 个客户错误,为未选中账号的 `Failed to read request body`,不是上游问题。9 次 failover 全部恢复。`lyon9801 0.0` 为 99.2/A,承担 1103 个成功请求;`https://ai.whistlelads.com plus 0.03` 为 93.6/A。`https://sub.yjxm1221.top plus 0.025` 两小时短窗 72.3/C,但 7 次失败均内部恢复,近 1 小时盈利池又为 100/A,不建议按共享短窗直接降优先级。
## Grok 分组
近 2 小时 24 请求、23 个客户错误,客户错误率 92.86%。唯一账号 `https://sub.yjxm1221.top grok` 6 次尝试仅 1 次成功,5 次 overload 均进入 failover,但没有第二账号可选,因此 5 次全部失败。另有 10 次 routing 503、7 次请求体 400 和 1 次客户端取消。
请求 `59d54771-35ac-4f0d-b418-414d11b40d2d` 证明上游 503 后约 2.154 秒触发 failover,排除唯一账号后立即 `no available accounts` 并返回 502。请求 `29367b0f-1f9c-47f0-b8f2-88f6017a262c` 在选号阶段 10ms 内发现无可用账号并返回 503。问题不是切号逻辑过慢,而是单账号分组没有候选冗余。
## 调优建议
### 立即处理
1. 若 Grok 继续对客户开放,增加至少一个经真实 `grok-4.5` 测试通过的第二账号并加入同一 Grok 分组;在只有一个账号时,临时不可调度只能缩短失败时间,不能提高成功率。
2. 对 5 个余额不足账号做经营选择:计划继续使用的先在对应上游恢复余额并通过原生账号测试;不再续费的退役,避免长期保持错误账号和虚假总容量。优先处理成本最低但当前不可用的 `https://api.iceiu.com plus 0.011`
3. 定位 `gpt-5.6``gpt-5.4-nano` 请求来源。若调用方写错模型,修正调用方;只有实时上游模型能力确认支持等价模型时,才用官方 model mapping,禁止猜别名。
### 继续观察
- 保持现有 OpenAI priority。`lyon9801` 虽查询时 5/5,但队列为 0、下一优先级正常承接,近期 TTFT 不支持提高 capacity 或降低全局并发。
- 保持 OpenAI response-header timeout 现状。近期 P99 远低于 180 秒,没有通过 timeout 调优改善错误的证据。
- 观察 `https://sub.yjxm1221.top pro 0.06``plus 0.025` 的 8-24 小时样本;短窗失败均已内部恢复,不应重复调优。
## CLI 证据边界
并行执行两个同类 `runtime` 命令时曾生成相同远端 job 名并互相覆盖,产生空账号列表和空分组结果;已串行重取并排除污染数据。后续同类巡检在该命名问题修复前应避免并行运行同一 mode 的远端 runtime 查询。
@@ -213,6 +213,9 @@
### R2.11 [completed]
依据 [UniDesk #2144](https://github.com/pikasTech/unidesk/issues/2144) 将单账号成本标注与优先级调优的最短路径固化到 Sub2API skill:账号级 `runtime errors --group --account --since` 作为评分、可靠性、TTFT、用量和成本首入口,仅在读取当前 runtime 字段时补一次 `runtime get`;全组概要只用于跨账号比较,名称和 priority 分别 dry-run、顺序 confirm、最终单次回读,不修改运行面,完成任务后将详细报告写入[任务报告](./details/sub2api-upstream-reliability/R2.11_Task_Report.md)。
### R2.12 [completed]
只读巡检 PK01 Sub2API 最近 2 小时运维情况:使用原生状态、智能诊断和所有分组客户可见错误概要,再对异常分组下钻账号评分、TTFT、错误归因、重试与切号效果;区分需立即调优、继续观察和非上游问题,给出配置优化建议但不修改源码、版本、runtime、YAML 或外部哨兵,完成任务后将详细报告写入[任务报告](./details/sub2api-upstream-reliability/R2.12_Task_Report.md)。
## R3 [completed]
增加 Sub2API 客户余额精准批量充值 CLI:支持从原生最近24小时用量提取活跃用户并生成每人增加20美元的补偿计划,也支持显式用户ID或账号 selector;默认 dry-run 输出完整账号、用户ID、当前余额、增额和目标余额,写入必须显式 --confirm 并自动回读对账。本轮只实现并验证 dry-run,禁止实际充值,必须等待用户再次明确授权,完成任务后将详细报告写入[任务报告](./details/sub2api-upstream-reliability/R3_Task_Report.md)。