跳到正文
FunCoding

搜索

搜索文档、Skill 和 MCP

会话容量、队列与期限

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

注册工作区数量、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 确认;不要仅凭版本号推断服务端已开启限流。内存和回放分配另见内存预算。