文档/ 运维

运行时设置

这些参数在管理台保存后即时生效,不需要重启。和环境变量是两回事——那些改完要重启。

两层设置§

超时、拉黑阈值等运行参数支持两层设置:

  • 系统级——在设置页配置,作为全局默认值
  • 分组级——在分组的设置标签页配置,启用覆盖后编辑,恢复默认则继承系统值;保存后生效

这样设计是因为不同上游的特性差异很大: 有的服务商响应慢但稳定,有的快但偶尔抽风, 用同一套超时和拉黑阈值不合适。

FIG. 1 — 系统级设置全局默认值

支持分组覆盖的参数,未覆盖时继承系统值。

怎么确认生效值

分组的设置标签页会标出哪些是继承自系统、哪些是本分组单独覆盖的。 排查「为什么这个分组行为和别的不一样」时,先看这里。

三种超时§

三个超时管的是请求生命周期里的不同阶段,症状不同,别调错:

参数管什么该调它的症状
首字节超时从发出请求到收到第一个字节上游排队久,请求还没开始响应就被判失败
单次上游请求超时每次上游尝试的时长上限,不是跨重试的总时长长输出任务被中途掐断
流空闲超时流式响应中,两个数据块之间的最大间隔流式输出中途卡住很久,但连接没断

推理模型要特别注意首字节超时—— 它们在开始输出前可能思考很久,默认值偏紧的话会误判为失败。

并发上限§

在「设置 → 路由调度」配置全局并发上限、访问密钥默认并发上限和分组默认并发上限。默认均为 0,表示不限制;限制的是正在处理的请求数,不是每分钟请求数。

访问密钥可单独覆盖,留空继承默认值;分组在运行参数中启用覆盖。显式设为 0 只取消该层限制,仍受其他层上限约束。

达到上限时立即拒绝,不排队,HTTP 请求返回 429 和 concurrency_limit_exceeded。流式请求在处理期间持续占用名额;降低上限不会强行中断已放行的请求。

并发计数只在当前 GPT-Load 进程内生效,不是多实例共享的总上限。JEV 决策调用也受分组并发限制,不能依赖护栏的异常放行绕过并发准入。

重试与拉黑§

  • 重试次数——全局额外重试预算,不支持分组覆盖。 调大能提高成功率,但失败请求的耗时也会变长
  • 拉黑阈值——一个凭据连续失败多少次后被自动摘除。 调小能更快隔离坏凭据,但偶发抖动也可能误伤

两者的完整机制见 调度是怎么做的。

「空响应重试」默认关闭,分组可覆盖。开启后,流式对话在尚未向客户端交付、上游自然结束且没有产出时尝试下一个候选;用尽预算后交付原空响应。不适用于 WebSocket、非流式、预热或带历史资源引用的请求,也不重试拒答、内容过滤或输出预算耗尽等有明确原因的空结果。

被重试的空响应可能已经在上游计费,但网关只记录最终交付尝试的用量与成本;开启前应接受这个估算边界。

上游错误规则§

在「设置 → 路由调度 → 错误处理规则」添加全局规则;分组运行参数中可启用完整覆盖。未覆盖时继承全局,覆盖为空列表时只使用内置处理;未命中规则也按内置策略处理。Modern 和 Classic 均可配置。

规则从上到下匹配,第一条命中生效。状态码为 200–599 的整数,多个状态码任一匹配即可;关键词在已识别错误的码、类型或消息中不区分大小写匹配子串,多个关键词任一命中即可。两类条件都填写时必须同时满足,至少填一类。

每条规则独立选择是否重试,以及一个动作:不改变状态、冷却当前凭据的当前模型、冷却整份凭据、累计失败后拉黑、仅本次请求跳过分组。冷却填写正整数秒;拉黑仍按阈值累计,模型冷却仅对支持该动作的操作生效。

保存后生效;列表最多 100 条,编码后不超过 65,535 字节。规则只使用已识别的上游错误,包括已识别的 HTTP 200 错误,不扫描正常回答文本;凭据探测与恢复方式不变。

仍遵守安全边界

规则不会绕过客户端请求错误、认证恢复和请求级限流的保护;已开始向客户端输出或执行结果未知时,不会强行重试。重试次数仍受全局预算限制。

路由策略§

在「设置 → 路由调度」选择全局路由策略:默认「原生优先」,在同一优先级内优先使用原生路由;「混合权重」让同层的原生与转换候选按有效权重竞争。 该项不支持分组覆盖,实际流量仍受可用凭据、请求亲和与协议能力限制。

Responses WebSocket 默认开启,分组可继承或覆盖;关闭会中断受影响连接,普通 HTTP/SSE 不受影响。全局关闭不会覆盖分组的显式开启。

会话亲和§

开启后,网关会根据访问密钥、客户端协议以及请求中的指令或首个用户输入前缀 生成软亲和键。在当前优先级和路由策略允许的候选中,具有相同稳定前缀的请求会尽量落在同一个凭据上。 三个参数:

  • 开关——是否启用
  • TTL——一条亲和记录保留多久
  • 容量——最多记住多少条会话(默认一万条)
它是软亲和,不是资源绑定

软亲和只尽量复用凭据,不保证资源归属。Responses 的 previous_response_id 使用独立的续接绑定,不受亲和开关影响;conversation 和其他资源引用不在该保证内。

日志留存§

请求日志保留天数决定日志留多久,默认 7 天,过期自动清理。

调大能查更久的历史,但数据库会持续增长—— 请求量大的话注意磁盘。用 SQLite 时尤其要留意。

按访问密钥开启的原始请求体记录沿用同一日志保留期,与日志一起清理;没有单独的全局记录开关。关闭某把密钥的记录只影响后续请求,不删除既有内容。记录会增加数据库与备份体积,应按排障需要控制开启范围和时间。

其他§

全局上游代理在设置页的「上游代理」中选择;代理地址统一在侧栏「代理」页新增、批量导入、编辑和测试,供全局、分组与凭据复用。测试由服务器经指定代理访问测试地址,不会自动启用或停用代理。

请求脱敏在独立设置区配置;自动选模和 JEV 智能护栏在「实验功能」中配置。实时语音模式位于「连接与超时」,Codex 分组可单独覆盖。详细步骤见:

  • 校验间隔——多久对凭据做一次可用性校验
  • 模型价格自动同步——是否从公开数据源同步价格, 见 模型管理。 注意这一项可以被环境变量 MODELS_DEV_AUTO_SYNC_ENABLED 接管—— 一旦设了那个变量,这里就变成只读,见 环境变量
  • 上游请求头、下游响应头与跨域—— 非标场景用,见 代理与请求头

什么时候该调§

默认值适用于大多数情况,没有明确症状就别动。盲目调大超时和重试,只会让失败的请求失败得更慢。

按症状对号入座:

  • 推理模型频繁超时 → 调大首字节超时(优先在该分组单独调)
  • 长文本任务被截断 → 调大请求超时
  • 流式输出中途断开 → 调大流空闲超时
  • 好凭据被频繁拉黑 → 调大拉黑阈值
  • 坏凭据隔离太慢 → 调小拉黑阈值
  • 有状态请求报找不到上下文 → 检查响应 ID 是否已登记、原凭据是否可用;其他资源引用需单凭据或上游支持共享

调整前先用 监控与排障 确认症状,只改和症状相关的那一项,改完观察一段时间再动下一个。

运行时设置 - GPT-Load