nodelay 的作用是让合规请求毫秒级转发、不排队等待,它跳过令牌桶排队环节而立即判断令牌是否充足,不足则返回503;必须与burst配合使用以避免雪崩,且不改变rate限流本质。

nodelay 的实际作用是让合规请求毫秒级转发,不排队、不等待——它不是关掉限流,而是跳过令牌桶的排队环节。
它解决的是“排队延迟”问题
默认限流模式下,当请求超过 rate 设定速率,Nginx 会把超限请求放进队列,等新令牌生成后再放行。这个等待过程可能引入几毫秒到几百毫秒的不可控延迟。启用 nodelay 后,Nginx 只做一次瞬时判断:当前令牌够就立刻转发,不够就立即返回 503(或自定义状态码),绝不挂起等待。
- 适合实时风控、WebSocket 连接、高频交易接口等 P99 延迟必须压在 1–5ms 的场景
- 对缓存命中请求尤其关键——本该毫秒返回,不该被限流逻辑拖慢
- 静态资源(JS/CSS/图片)网关中,能避免因排队导致的加载卡顿
nodelay 必须和 burst 配合使用
单独设 nodelay 且 burst=0,等于“有令牌才放行,没令牌全拒绝”,突发流量毫无缓冲,极易引发雪崩。合理配置 burst 才能兼顾弹性与低延迟:
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- burst 提供突发容量,比如 rate=100r/s + burst=50,允许瞬时 150 请求通过
- nodelay 确保这 150 次请求全部立即处理,不排队、不堆积
- 超出 burst 的请求才被立刻拒绝,不占用服务资源
它不改变限流本质,只改变执行方式
nodelay 不影响 rate 阈值,也不放松安全边界。它只是把“等令牌”变成“查令牌”,把串行等待变成并行判定:
- 平滑流量走 rate 控制,节奏稳定
- 突发流量靠 burst + nodelay 瞬时消化,不引入延迟
- 后端看到的请求节奏更真实,压力曲线更可预测
注意别和 TCP_NODELAY 混淆
tcp_nodelay 是 HTTP 模块里控制 Nagle 算法的参数,影响小包发送时机;而 limit_req 的 nodelay 是限流模块行为开关,两者作用域、机制、生效位置完全不同。stream 块中若需禁用 Nagle,得用 so_keepalive=:1,不是 tcp_nodelay on。










