---

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稳定且无显著排队时延增长
  • 体验权衡:记录平均等待时间与拒绝比例,调整 burstrate

注意事项

  • 过大 burst 可能导致入口排队过长,应依据SLA调整
  • 与应用层限流协同,防止绕过与雪崩
  • 按场景选择维度(IP/Key/路径)并设置白名单
  • 采集限流事件用于审计与告警

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部