关于在body_filter_by_lua 中修改limit_rate 后速度跌0的问题

54 views
Skip to first unread message

chenhong...@gmail.com

unread,
Jul 1, 2021, 11:26:33 PM7/1/21
to openresty
由于业务需要,需要动态调整当前正在进行请求的速率。理所当然想到在body_filter_by_lua 中做一些判断逻辑修改 ngx.var.limit_rate 来实现。

但是在实际操作过程中,遇到了问题:

比如前100MB 限速是2MB/s, 当数据传输超过100MB时修改限速1MB/s,此时速度会突然降为0,并且持续很长一段时间(50s)才开始以1MB/s 的速度开始传输。

看了下Nginx 限速这块的代码,实际上是全局的限速,在2M/s 传输100M 数据用了50s,此时修改成1MB/s 会sleep 50s,把全局速度平均到1M后才开始继续,这是导致sleep 50s 的根因。

请问下春哥和各位大神,这个问题有没有什么解决方法。尝试过当修改ngx.var.limit_date 时修改ngx.var.limit_rate_after 到当前的发送数据量,但是后者并非一个变量无法修改。
a.png

Reply all
Reply to author
Forward
0 new messages