首页/AI/大模型部署与运维速查/并发限制:在途请求数上闸

并发限制:在途请求数上闸

并发限制控制同时在途的请求数:Nginx limit_conn 按连接数上闸,应用网关用信号量/队列上限;它约束的是「同时干多少活」,与速率限流互补。

控制同时在途的请求数

并发限制控制的是同时在途的请求数,与速率限流互补。网关层可以按来源地址限制连接数,应用网关用信号量或队列上限控制在处理的请求量。关键目标是让超出的部分排队或快速失败,而不是无限堆积把延迟一路推高。

基本信息

适用平台Nginx 网关与自研应用网关
实现方式连接数限制、信号量、队列上限
配置位置紧邻流量入口的网关侧
目标值略高于引擎实际容量,超出部分快速失败

Nginx 连接数限制片段

Nginx 连接数限制片段
limit_conn_zone $binary_remote_addr zone=conn:10m;

location /v1/ {
    limit_conn conn 20;
    proxy_pass http://127.0.0.1:8000;
}

典型使用场景

  • 过载保护:引擎容量有限,超出的请求要快速失败
  • 多租户隔离:给不同调用方设不同上限,避免一方打满全场
  • 压测控量:并发固定后测得的分位数才有意义
  • 与速率限流配合:速率控到达速度,并发控同时在处理量
  • 故障期收紧:过载时临时调低上限,保住已接收请求的成功率
  • 灰度期保护:新版本承接能力未确认时,先给一个较小的上限

手段与控制的量

手段控制的量典型位置
连接数限制同一来源同时在连的数量网关
队列上限允许排队的请求数网关或应用层
信号量同时处理的请求数应用网关
超时设置单个请求的最长等待网关与客户端
网关并发上限建议略高于引擎容量:多出的部分排队,超过则快速失败,而不是无限等待。
并发上限要与超时一起配:只限并发不设超时,少数长请求仍会把队列占满。
记下每次上限调整的原因与时间:并发上限属于运营参数,改动没有记录时,事后无法解释流量曲线的变化。
被拒绝的请求要有明确错误码与说明:调用方看到限流提示才知道该退避,否则只会盲目重试把压力叠上来。
并发上限与实例数量联动:扩了实例要同步调高上限,否则新实例接不到流量,扩容等于没扩。

易错点

  • 只设速率限流:并发不受控时长连接堆积,抢占与尾延迟同时恶化
  • 上限设得远高于引擎容量:看起来没被拒绝,实际请求都在排队等超时
  • 不区分调用方:一个批量任务就能占满全部并发,其他业务被饿死
  • 客户端不设超时:服务端早已失败,客户端还在等,资源占用被拉长

数据来源与参考

  • Nginx 官方文档:ngx_http_limit_conn_module(nginx.org/en/docs)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌