Skip to content

Runbook:无可用账号与模型不可用

常见现象包括 No available accountsAll available accounts exhausted、503,以及某些场景下的 404 model_not_found

先区分 404 和 503

当前实现会重新诊断 Group 中的模型能力:

  • 404 model_not_found:池里有账号,但没有任何账号配置支持请求模型。重点查模型名和映射。
  • 503 service unavailable:账号池为空,或有能力的账号因限流、配额、并发、过载、临时摘除等暂时不能使用。

不要对 404 盲目重试;不要把所有 503 都归因于上游宕机。

排查顺序

1. 确认用户路由

  • Sub2API Key 是否有效、启用且未过期。
  • Key 绑定的 Group 是否正确。
  • 用户是否被授权使用该 Group。
  • 请求入口与 Group platform 是否匹配。
  • Group 是否 active。

2. 确认池里确实有账号

  • Account 是否加入当前 Group,而不是同名测试 Group。
  • 平台是否兼容。
  • 是否从 Group 被误移除。
  • 是否批量设置了 schedulable=false

3. 检查每种不可用状态

在账号列表和 Ops 账号可用性中查看:

  • status error/inactive。
  • schedulable false。
  • expires_at。
  • temp unschedulable until/reason。
  • rate limit reset at。
  • overload until。
  • quota auto-pause。
  • 当前 in-use 和 concurrency。

4. 检查模型

  • 请求模型拼写和大小写。
  • Group dispatch mapping。
  • Account model_mapping/白名单。
  • 上游模型同步结果。
  • Channel pricing restriction 和 billing model。

5. 检查基础设施

  • Redis 是否导致运行时状态或调度缓存异常。
  • PostgreSQL 查询是否失败。
  • 多实例 scheduler outbox/缓存是否滞后。
  • 最近是否做过批量导入、Group 修改或模型同步。

恢复动作

根因动作
模型未映射在测试 Group 修正映射并验证
账号手动停调度确认维护结束后恢复 schedulable
临时摘除但根因已修复测试成功后清除 temp unschedulable
上游限流等待 reset 或切换独立额度账号
并发满等待/扩容账号池,谨慎调整并发
凭证错误修复 Key/OAuth,再测试和 Recover State
Group 空池加入已验证账号,不直接用未测试账号救火

禁止动作

  • 不确认 reset 时间就批量 Clear Rate Limit。
  • 为消除告警而开启“忽略无可用账号错误”。
  • 临时把所有平台账号混入同一 Group。
  • 直接把账号并发调到很大来掩盖容量不足。
  • 未核对价格就切到高价备用模型。

恢复验证

  1. Ops 显示目标 Group available account 大于 0。
  2. /v1/models 包含请求模型。
  3. 实际非流式和流式请求成功。
  4. 请求落到预期 Account 和 upstream model。
  5. usage 与费用正确。
  6. 观察至少一个告警窗口,确认没有再次耗尽。

本文档用于帮助你理解、部署和运维 Sub2API。使用前请确认上游服务条款与当地法律要求。