Skip to content

并发限流

🚦 `pkg/api/concurrency.go` — 并发上限与等待队列。

📁 源码:pkg/api/concurrency.go

类型

符号源码说明
ConcurrencyLimiterL15限流器
NewConcurrencyLimiter(max, queue)L25带队列构造
NewBasicConcurrencyLimiter(max)L44无队列构造
ProcessConcurrent(...)L137并发处理批量
(*Server) CreateConcurrencyLimitMiddleware()L167mux 中间件

模型

请求状态流转

下图展示单个请求在 --max-concurrent--queue-size 约束下的状态机:从接入到执行、排队或被拒绝的完整流转,以及释放槽位后唤醒等待者。

两个构造器

构造器队列满时行为
NewConcurrencyLimiter排队等待
NewBasicConcurrencyLimiter立即拒绝

API 服务用前者,--queue-size 控制队列深度。

统计

GetConcurrencyStatsserver.go#L98)返回 active/waiting/max/queue/uptimeGET /stats 暴露。

配置

max-concurrent 不是越大越好

  • --max-concurrent N:并发上限,建议 ≤ Chrome 池大小——超过池大小请求只能排队等 Driver,徒增延迟
  • --queue-size N:等待队列深度,缓冲突发流量

队列满返回 503,客户端应退避重试(指数退避,别立即重打)。见 故障排查

下一步

基于 MIT 许可发布