首页/AI/大模型部署与运维速查/网关容量:按常驻连接估算

网关容量:按常驻连接估算

网关容量按常驻连接而非 QPS 估:流式长连接下,连接数 ≈ 最长生成时长 × 并发;核对文件描述符上限、worker 连接数与上游 keepalive 数。

网关容量要用连接数来算

推理网关扛的是一批「打开后长时间不关闭」的流式连接:一次生成可能持续十几秒到几分钟,这段时间连接一直占用着。所以容量口径不是每秒请求数,而是同时驻留的连接数,近似等于请求到达速率乘以平均生成时长。按请求数估算会严重低估需求——同一个每秒请求数,在长生成场景下对应数倍的连接。

基本信息

核心口径常驻连接数 ≈ 请求到达速率 × 平均生成时长
进程上限文件描述符数量限制(ulimit -n)
反向代理上限工作进程数 × 每进程连接数
上游连接与引擎之间保持的长连接数量
扩容优先级网关扩容成本远低于引擎,应保证它不是先打满的一环

典型使用场景

  • 新模型上线前评估:生成时长变化的模型会显著改变网关连接需求
  • 流式改造:从一次性返回改为流式返回后,连接驻留时间大幅延长
  • 高峰预案:按历史峰值连接数推算需要多少副本与多高的进程上限
  • 故障排查:出现连接被拒或超时时,先确认是连接数耗尽还是引擎过载
  • 配置审查:核对工作进程数、每进程连接数与上游长连接是否匹配

容量核对

容量核对
ulimit -n                       # 当前进程文件描述符上限
ulimit -Hn                      # 硬上限,决定了可调整的天花板
ss -s                           # 系统级连接统计概览
ss -tn state established '( sport = :443 )' | wc -l   # 当前活跃连接数
# 反向代理侧:连接容量上限 = 工作进程数 × 每进程连接数
# 常驻连接估算:平均生成时长(秒)× 到达速率(每秒请求数)
# 上游长连接数应与引擎可接受的并发保持同一量级

口径对比

口径适用场景低估风险
每秒请求数短请求、一次性返回长生成场景下严重低估连接需求
常驻连接数流式长连接需要准确的生成时长分布支撑
并发生成数引擎侧容量规划与网关连接数口径不同,不能直接互换
文件描述符上限单进程资源边界达到上限后新连接被拒,表现为随机失败
上游长连接数网关到引擎的链路过少会频繁重建连接,过多会超出引擎承受范围
文件描述符上限要同时看软限制与硬限制:只调软限制会被硬限制挡住,容器环境下还要确认运行时对上限的处理方式。
网关扩容成本远低于引擎:先保证网关不先于引擎打满,出现连接被拒时优先横向增加副本并放宽进程限制。

易错点

  • 按每秒请求数估网关:流式场景连接才是瓶颈,估算口径要先换过来
  • 忽略生成时长分布:平均值不高但长尾很长时,连接高峰远高于按均值算出的结果
  • 只调进程连接数不看文件描述符:工作进程侧放宽了,进程整体上限仍然是瓶颈
  • 上游长连接配置与实际并发不匹配:连接不足则频繁重建,过多则把压力传导给引擎

数据来源与参考

  • Nginx 官方文档:worker_connections(nginx.org/en/docs)
  • Linux ulimit 手册(man7.org)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌