前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nginx之完美限速limit_module

nginx之完美限速limit_module

作者头像
随心助手
发布2019-10-15 11:37:45
4940
发布2019-10-15 11:37:45
举报
文章被收录于专栏:nginx遇上redis

Nginx结合漏桶算法和令牌桶算法。对请求做了完美限速。

漏桶(Leaky Bucket)算法思路很简单,水(请求)先进入到漏桶里,漏桶以一定的速度出水(接口有响应速率),当水流入速度过大会直接溢出(访问频率超过接口响应速率),然后就拒绝请求,可以看出漏桶算法能强行限制数据的传输速率。

令牌桶算法(Token Bucket)和 Leaky Bucket 效果一样但方向相反的算法,更加容易理解.随着时间流逝,系统会按恒定1/QPS时间间隔(如果QPS=100,则间隔是10ms)往桶里加入Token(想象和漏洞漏水相反,有个水龙头在不断的加水),如果桶已经满了就不再加了.新请求来临时,会各自拿走一个Token,如果没有Token可拿了就阻塞或者拒绝服务.

代码语言:javascript
复制
nginx配置如下: 
http {
.....................................
limit_req_zone $binary_remote_addr zone=test:100m   rate=10r/s;   
//其中$binary_remote_addr不同请求不同值
server {
            ……………………
 limit_req   zone=test  burst=5  nodelay;
            …………………
}
}

zone=test 表示设置了名为test的存储区,大小为10兆字节。

rate=10r/s 的意思是允许每秒10个请求的速度。

burst=5 表示最大令牌数量。超过就会503拒绝。

如果太过多的请求被限制延迟,如果不需要延迟,这时需要使用nodelay参数。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-08-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 nginx遇上redis 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档