限流规则里的突发额度与不延迟参数各自改变什么,排队还是拒绝由谁定

📅 2026-10-12 👁️ 1

限流规则里的突发额度与不延迟参数各自改变什么,排队还是拒绝由谁定?简短回答:速率参数决定稳态放行节奏;突发额度(burst)决定超额请求里有多少能进入等待;不延迟参数(nodelay)决定进入等待的请求要不要立刻处理;至于单个请求最终是排队还是被拒绝,由它到达时等待中的请求数是否已经超过 burst 上限决定。下面以 nginx 官方文档对限流模块的说明为准,把这几个参数逐项拆开。

限流到底限在哪一层?

限流的统计对象是键,不是路径。官方文档的定位是:该模块按定义的键限制请求处理速率,典型用途是限制来自单个 IP 的请求速率,实现方式是漏桶。这意味着同一个键共享同一份额度:键选成 IP,同一出口 IP 后面的多个真实用户会互相挤占;键选得过细,限制又容易被分散绕开。选键是限流配置里影响最深远的一个决定,动手前先想清楚限制的粒度到底是”每个访客”还是”每个调用来源”。

burst 改变的是什么?

按官方示例,rate 设为每秒 1 个请求、burst 设为 5 的含义是:平均每秒放行 1 个请求,之外允许不超过 5 个请求作为突发。超额请求不会立刻被拒,而是被延迟处理;只有当等待中的超额请求数量超过 burst 上限时,请求才被终止并按设定状态码返回。所以 burst 不是缓存池的容量,也不是吞吐上限,它描述的是允许多少超额请求排队等待。把 burst 调大,站点能容纳更久的突发,但每个排队的请求等待时间也更长,客户端超时的风险随之上移。

nodelay 与 delay 各自改变什么?

不加参数时,进入队列的超额请求一律延迟到桶里腾出空间才处理。nodelay 的作用是让超额请求不排队:仍然占用突发额度,但立即处理,额度用完即拒。delay 则是两者之间的折中:按官方文档,delay 参数设定超额请求从第几个开始被延迟,默认值为 0,即所有超额请求都延迟;设为非零时,前面一部分超额请求立即处理,之后的才进入等待。三者的差别不在能放行多少请求,而在放行的那些请求以什么节奏被处理。

排队还是拒绝由谁定?

单个请求的命运由两个开关共同决定:到达时队列是否已满,决定排队还是拒绝,这是 burst 画出的边界;被拒时返回什么,由返回码指令设定,不配置时按默认状态码返回。调试阶段还有第三个开关:dry-run 模式开启后不真拦截,只在共享内存里照常记账,适合上线前观察真实流量里有多少请求会命中限额。推荐的调参顺序是先开 dry-run 观察键的命中分布,再定速率与 burst,最后根据业务对延迟的容忍度决定要不要 nodelay。

参数 改变什么 不改变什么
rate 稳态放行速率 突发容量
burst 允许排队的超额请求数 稳态速率
nodelay 排队请求改为立即处理 突发容量与拒绝边界
delay=N 前 N 个超额请求免于延迟 突发容量
dry-run 只记账不拦截 记账口径
返回码指令 被拒请求的响应状态 拦截行为本身

常见问题

问:把 burst 调大是不是就能抗住高频请求? 答:burst 只是让超额请求排队等待,超过上限照样拒绝;面对持续的高频请求,更大的 burst 只会拉长正常请求的等待时间。

问:键应该选 IP 还是别的? 答:取决于要限制的对象。限单个访客选 IP 一类标识,限接口调用方选账号或凭据标识;选错键会让限额作用到不该作用的人群。

问:怎么验证规则生效了? 答:先开 dry-run 观察命中计数,再切回拦截模式,并把返回码设成便于识别的值,客户端日志里就能把限流拒绝和其他错误分开。

相关文章

选型时在线体验站和接口文档能核对到哪些能力

选型别停在功能清单上:用官方在线体验站实际点开后台确认流程与能力边界,用公开接口文档确认能调哪些能力、拿到哪些字段,再看服务端能力能否被外部 AI 客户端经统一协议接入。本文给一份可执行的核对清单与常见误判。

2026-10-12

安全通告用二十五分制评到二十三分,站点该怎么判断处置优先级

评级高不等于处置顺序靠前。以 Drupal 核心公告的一条高危档公告为例:它给出二十五分制下的分值、暴露前提与影响维度,还说明成因只作用于特定数据库并已检测到场外利用尝试。本文解释这类评分该怎么读,分值之外要补看哪几行,再给出站点排定处置顺序与升级前后留退路的做法。

2026-10-12

内联数据地址没被内容过滤规则覆盖时,跨站脚本从哪条路径进来

内容过滤规则多按标签和属性名编写,内联数据地址这类可执行载体没被覆盖时,脚本可以换一条路径进到渲染环节。本文结合 Joomla 核心公告里对内联数据地址过滤不足的成因写法,说明富文本里可执行载体分几类、只按标签名过滤为什么会漏,以及敏感词过滤、关键词替换与结构层校验分别该放在哪一层。

2026-10-12

装机量接近一半的那类建站程序,攻击面是否也跟着放大

装机量大确实会带来更多针对性探测,但放大攻击面的不是软件质量本身,而是存量规模与可脚本化程度:同一份利用代码值得批量试多少次。选型时该看的是默认配置有多紧、更新通道是否自动、输入层是否有内置防护、修复响应是否可核查,并按同一时间窗内的修复节奏作横向对照。

2026-10-12

请求头太长被服务端直接拒绝时,先收 Cookie 还是先收自定义头

请求头过长被服务端拒绝对应 431 客户端错误:可能是总量超标,也可能是单个字段超标,响应体应说明是哪一种。排查先归因再收量;跟踪类 Cookie 由浏览器自动携带、常年累积、服务端可控,通常是最先收减的对象,其次才是自定义头与网关追加项。

2026-10-12

公告把缺陷类型写成不再受支持、受影响版本是全量时该怎么处置

缺陷类型写成不再受支持、受影响版本为全量的安全公告,意味着项目已被维护者放弃、不会有修复版本,官方建议动作是卸载而非升级。本文以 Drupal 2026 年 10 月的公告为例说明这类公告的读法与处置顺序:确认在用范围、先备份、停用模块、寻找替代。

2026-10-12

清缓存的动作能删掉任意目录,一段名字拼进路径会出什么问题

Joomla 公告 CVE-2026-90915 显示,缓存分组名未做校验可导致路径穿越,清缓存动作进而删掉任意目录。本文拆解名字拼进路径的成因,给出缓存、上传、备份三类拼路径位置的复查清单,并说明升级之外输入白名单、根目录限定与操作前备份的配套动作。

2026-10-12

发信模板没有转义机制时,后台填进去的内容会在哪一环被执行

Joomla 公告 CVE-2026-90918 指出邮件模板功能缺少转义机制,导致多个扩展出现跨站脚本向量。模板输出与页面输出共用同一条转义要求,后台填写项、采集内容与用户提交内容都是注入来源;写入侧的敏感词过滤与内容审核替代不了输出侧转义,两道关卡要分别配置。

2026-10-12