微服务引擎MSE

并发限制limit-conn插件

2025-05-27 07:54:47

描述

限制并发请求(或并发连接)插件。

作用范围

该插件即可用于全局插件,也可用于路由级插件。全局插件配置的优先级高于路由级插件配置,当同时在某一路由上配置了limit-conn的全局插件和路由级插件时,以全局插件配置中设置的属性值为准。

属性

名称

类型

必选项

默认值

有效值

描述

conn

integer


conn   > 0

允许的最大并发请求数。超过 conn 的限制、但是低于   conn + burst 的请求,将被延迟处理。

burst

integer


burst   >= 0

允许被延迟处理的并发请求数。

default_conn_delay

number


default_conn_delay   > 0

默认的典型连接(或请求)的处理延迟时间。

only_use_default_delay

boolean

false

[true,false]

延迟时间的严格模式。 如果设置为true的话,将会严格按照设置的时间来进行延迟

key_type

string

"var"

["var",   "var_combination"]

key   的类型

key

string



用来做请求计数的依据。如果 key_type 为 "var",那么 key 会被当作变量名称,如 "remote_addr" 和   "consumer_name"。如果 key_type 为 "var_combination",那么 key 会当作变量组合,如 "remote_addr   consumer_name"。如果 key 的值为空,$remote_addr 会被作为默认 key。

rejected_code

string

503

[200,...,599]

当请求超过 conn + burst 这个阈值时,返回的   HTTP 状态码

rejected_msg

string


非空

当请求超过 conn + burst 这个阈值时,返回的响应体。

allow_degradation

boolean

false


当插件功能临时不可用时是否允许请求继续。当值设置为 true 时则自动允许请求继续,默认值是 false。

如何使用

在配置窗口页以YAML格式填写

配置示例

下面是一个示例,开启 limit-conn 插件,并设置 key_typevar:

conn: 1

 burst: 0

 default_conn_delay: 0.1

 rejected_code: 503

 key_type: "var"

 key: "remote_addr"

下面是一个示例,开启了 limit-conn 插件,并设置 key_typevar_combination:

conn: 1

 burst: 0

 default_conn_delay: 0.1

 rejected_code: 503

 key_type: "var_combination"

 key: "$consumer_name $remote_addr"

停用/启用

在配置页面设置生效开关

验证插件

上面启用的插件的参数表示只允许一个并发请求。 当收到多个并发请求时,将直接返回 503 拒绝请求。

  curl -i http://127.0.0.1:9080/index.html?sleep=20

 <html>

 <head><title>503 Service Temporarily Unavailable</title></head>

 <body>

 <center><h1>503 Service Temporarily Unavailable</h1></center>

 <hr><center>openresty</center>

 </body>

 </html>

这就表示 limit-conn 插件已经生效了。


z.z00dRdyUjo