专栏首页nginx遇上redisnginx之完美限速limit_module

nginx之完美限速limit_module

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

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

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

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参数。

本文分享自微信公众号 - nginx遇上redis(GGame_over_the_world)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-08-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • CNN局部连接、权值共享

    对于一个1000 × 1000的输入图像而言,如果下一个隐藏层的神经元数目为10^6个,采用全连接则有1000 × 1000 × 10^6 = 10^1...

    随心助手
  • SQL注入攻击导致BIGINT溢出错误

    首先, 溢出,通俗的讲就是意外数据的重新写入,就像装满了水的水桶,继续装水就会溢出,而溢出攻击就是,攻击者可以控制溢出的代码,如果程序的对象是内核级别的,如d...

    随心助手
  • 关于版本号:alpha、beta、rc、stable

    但是对于版本怎么定义,规则如何确定,却是千差万别。具体应用,可以结合自己目前的实际情况命名;

    随心助手
  • 23种设计模式之——策略模式

    它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。

    良月柒
  • 第一个爬虫小程序

    利用之前编写的简单爬虫的py文件,再利用 pyinstaller(第三方库) 将python打包成exe,通过tkinter(第三方库),实现程序窗口化,通过对...

    AngelNH
  • 关于今天很热的--FizzBuzzWhizz

    今天早上到现在看到了3篇关于FizzBuzzWhizz的问题,第一篇是@程序媛想事儿(Alexia)【最难面试的IT公司之ThoughtWorks代码挑战——F...

    脑洞的蜂蜜
  • numpy.newaxis用法

    np.newaxis 在使用和功能上等价于 None,查看源码发现:newaxis = None,其实就是 None 的一个别名。

    周小董
  • GP TEE可信根介绍

    在当前万物互联的时代,我们的生活越来越依赖于智能移动设备。我们用它们来社交,购物,看视频。尽管有这些好处,但这些设备却容易受黑客攻击,可能会导致个人信息泄露、财...

    安智客
  • 数据分析篇(三)

    # 当我们用array函数创建一个不是一维数组的时候,shape就会输出一个元组,2表示行数,3表示列数。

    不断折腾
  • Kaggle 神器 xgboost

    在 Kaggle 的很多比赛中,我们可以看到很多 winner 喜欢用 xgboost,而且获得非常好的表现,今天就来看看 xgboost 到底是什么以及如何应...

    杨熹

扫码关注云+社区

领取腾讯云代金券