---
title: NGINX 动态限流与队列保护(limit_req、burst 与等待验证)
date: 2025-11-26
keywords:
- limit_req
- burst
- 429
- 队列等待
- 限流策略
description: 使用limit_req实现令牌桶限流与突发队列保护,通过burst与是否nodelay控制等待与丢弃策略,提升入口层稳定性并给出验证方法。
categories:
- 文章资讯
- 编程技术
---
概述
NGINX的limit_req为入口层提供令牌桶限流。burst 决定突发队列大小;不使用 nodelay 可让超额请求排队等待,可在短期峰值下保护后端。
关键实践与参数
- 速率:
rate=20r/s基线,按业务调整 - 突发队列:
burst=100应对瞬时峰值 - 等待策略:不配置
nodelay则进入等待队列;配置nodelay直接判 429 - 维度:按IP或客户端Key限流,叠加全局阈值
示例/配置/实现
limit_req_zone $binary_remote_addr zone=ip:10m rate=20r/s;
limit_conn_zone $binary_remote_addr zone=conn:10m;
server {
location /api/ {
limit_req zone=ip burst=100; # 无nodelay,允许等待
limit_conn conn 100;
proxy_pass http://api;
}
}
验证
- 峰值压力:在100–200并发下,观察等待队列吸收突发;超队列后返回429
- 后端保护:后端QPS稳定且无显著排队时延增长
- 体验权衡:记录平均等待时间与拒绝比例,调整
burst与rate
注意事项
- 过大
burst可能导致入口排队过长,应依据SLA调整 - 与应用层限流协同,防止绕过与雪崩
- 按场景选择维度(IP/Key/路径)并设置白名单
- 采集限流事件用于审计与告警

发表评论 取消回复