Skip to content
FunCoding

Search

Search docs, Skills and MCP

会话容量、队列与期限

按工作区、daemon、连接和 prompt 分层限制负载,并配置超时。

This page has not been translated into English yet. The original Chinese version is shown below.

注册工作区数量、live 会话数量、SSE 客户端和排队 prompt 是不同层的容量。提高其中一项不会自动提高其他项,也不表示主机能安全承载对应并发。

负载参数

参数默认作用
--max-sessions32每工作区 fresh live session 上限;0 关闭
--max-total-sessions通常 800daemon 全部工作区的 fresh session 总上限;0 关闭
--max-pending-prompts-per-session5每会话已接纳但未结束的 prompt,包含正在执行者;0 关闭
--max-connections256listener 原始 TCP 连接数
--event-ring-size8000每会话 SSE 重连回放事件数

已有 live session 的附着不消耗 fresh session 名额,恢复、branch/fork 创建则消耗。会话满时返回 503 session_limit_exceeded,总量限制带 scope: total;prompt 满时返回 prompt_queue_full,均有 Retry-After: 5。

总会话默认值取决于注册容量:高于 25 时固定为 800,包括默认 256 容量下仅启动一个工作区的情况;容量不超过 25 时,一个启动/恢复工作区默认不限总量,多个则按每工作区上限和数量推导。运行中增减注册不会重新计算总量。

每会话还有默认 64 个 SSE 订阅者、每订阅者默认 256 帧队列。订阅 maxQueued 可在 16–2048 调整,不能用它改变整个 SSE replay ring。大量客户端的内存成本取决于这些层共同作用。

初始化与恢复

--initialize-timeout-ms 默认 10000,适用于 ACP initialize、newSession、工作区状态轮询等请求。--session-restore-timeout-ms 默认 60000;若显式初始化预算更长,未显式设置的恢复预算提升到相同值。

两项必须为正整数且不超过 2147483647,恢复的 0 也非法。超过 JavaScript 定时器上限不会被视为“更长等待”,而是在启动时拒绝。恢复失败的处理见历史与恢复。

三种交互期限

参数环境变量默认与结果
--prompt-deadline-msQWEN_SERVE_PROMPT_DEADLINE_MS默认关闭;到期中止 prompt,返回 504 prompt_deadline_exceeded
--writer-idle-timeout-msQWEN_SERVE_WRITER_IDLE_TIMEOUT_MS默认关闭;SSE 无成功刷出超过期限,client_evicted 后关闭
--permission-response-timeout-ms无默认 0 无限等待,正整数同时约束普通权限和 ask_user_question

prompt 请求体 deadlineMs 只能缩短已有服务端期限,不能延长。prompt/writer 值必须为正整数毫秒,0 非法;permission-response 允许 0。前两项的显式 ServeOptions 优先于环境。

SSE 约每 15 秒发心跳,writer 期限应明显长于此间隔;小于 15000 会驱逐正常但空闲的连接。它检查成功 flush,不是最近收到业务事件的时间,适合处理 NAT 静默断开后长时间残留的 socket。

依赖这些行为前检查 prompt_absolute_deadline、writer_idle_timeout。HTTP rate limit 也可显式启用并通过 rate_limit capability 确认;不要仅凭版本号推断服务端已开启限流。内存和回放分配另见内存预算。