先说结论:

ingress节点数量=n0

ingress限流配置

nginx.ingress.kubernetes.io/limit-rps: "n1"  

nginx.ingress.kubernetes.io/limit-burst-multiplier: "n2"

每分钟限流连接数为 (60*n1+n1*n2)*n0

ingress限流配置

nginx.ingress.kubernetes.io/limit-rps: "n1"  

nginx.ingress.kubernetes.io/limit-burst-multiplier: "n2"

每分钟限流连接数为 (n1+n1*n2)\n0

所以,当n2为定值的情况下,set rps=1和rpm=60并不等价。

解析

nginx的限流是一个队列模型。所以限流连接数为 队列长度+队列处理能力。

对应下面的配置即,rate为队列处理能力。burst为队列长度。

nginx配置

ingress控制器会把注解修改成如下nginx配置,此例子之修改了limit-rps=5或者limit-rpm=300,limit-burst-multiplier(放大系数)为默认值5。

# qps = 5
#实际效果为每分钟限流325
limit_req_zone $limit_cmRfaW5ncmVzcy1yZC1oZWxsby1sZWdhY3k zone=rd_ingress-rd-hello-legacy_rps:5m rate= 5r/s ;
limit_req zone=rd_ingress-rd-hello-legacy_rps burst=25 nodelay;
# qpm = 300
#实际效果为每分钟限流1800
limit_req_zone $limit_cmRfaW5ncmVzcy1yZC1oZWxsby1sZWdhY3k zone=rd_ingress-rd-hello-legacy_rpm:5m rate= 300r/m ;
limit_req zone=rd_ingress-rd-hello-legacy_rpm burst=1500 nodelay;

参考:

https://medium.com/titansoft-engineering/rate-limiting-for-your-kubernetes-applications-with-nginx-ingress-2e32721f7f57

https://www.nginx.com/blog/rate-limiting-nginx/

Ingress限流的更多相关文章

  1. 通过Dapr实现一个简单的基于.net的微服务电商系统(七)——一步一步教你如何撸Dapr之服务限流

    在一般的互联网应用中限流是一个比较常见的场景,也有很多常见的方式可以实现对应用的限流比如通过令牌桶通过滑动窗口等等方式都可以实现,也可以在整个请求流程中进行限流比如客户端限流就是在客户端通过随机数直接 ...

  2. Envoy实现.NET架构的网关(五)集成Redis实现限流

    什么是限流 限流即限制并发量,限制某一段时间只有指定数量的请求进入后台服务器,遇到流量高峰期或者流量突增时,把流量速率限制在系统所能接受的合理范围之内,不至于让系统被高流量击垮.而Envoy可以通过e ...

  3. WebApiThrottle限流框架使用手册

    阅读目录: 介绍 基于IP全局限流 基于IP的端点限流 基于IP和客户端key的端点限流 IP和客户端key的白名单 IP和客户端key自定义限制频率 端点自定义限制频率 关于被拒请求的计数器 在we ...

  4. [WCF编程]9.性能与限流

    一.性能概述 WCF服务的性能取决于很多因素.出了CPU.RAM和网络性能等常见的因素外,实例上下文模式.并发模式.数据契约的设计或使用的绑定等与WCF有关的因素都起着重要的作用. 实例上下文模式用来 ...

  5. 快速入门系列--WCF--06并发限流、可靠会话和队列服务

    这部分将介绍一些相对深入的知识点,包括通过并发限流来保证服务的可用性,通过可靠会话机制保证会话信息的可靠性,通过队列服务来解耦客户端和服务端,提高系统的可服务数量并可以起到削峰的作用,最后还会对之前的 ...

  6. WCF Throttling 限流的三道闸口

    WCF Throttling 限流的三道闸口 一.WCF Throttling  流量限制简介 我们期望WCF服务端能够处理尽可能多的并发请求,但是资源是有限的,服务不可能同时处理无限多的并发请求,如 ...

  7. 控制ASP.NET Web API 调用频率与限流

    ASP.NET MVC 实现 https://github.com/stefanprodan/MvcThrottle ASP.NET WEBAPI 实现 https://github.com/stef ...

  8. Open vSwitch 给虚拟机网卡限流(QoS)

    这里我们简单描述下如何通过Open vSwitch给虚拟机限流(出流量),同时测试限流效果.测试环境继续复用<整合Open vSwitch与DNSmasq为虚拟机提供DHCP功能>一文中描 ...

  9. 服务接口API限流 Rate Limit 续

    一.前言 上一篇文章中粗浅的介绍使用Redis和基于令牌桶算法进行对服务接口API限流,本文介绍另一种算法---漏桶算法的应用.Nginx想必大家都有所了解是一个高性能的 HTTP 和反向代理服务器, ...

  10. 服务接口API限流 Rate Limit

    一.场景描述 很多做服务接口的人或多或少的遇到这样的场景,由于业务应用系统的负载能力有限,为了防止非预期的请求对系统压力过大而拖垮业务应用系统. 也就是面对大流量时,如何进行流量控制? 服务接口的流量 ...

随机推荐

  1. 524. 通过删除字母匹配到字典里最长单词 (Medium)

    问题描述 524. 通过删除字母匹配到字典里最长单词 (Medium) 给你一个字符串 s 和一个字符串数组 dictionary ,找出并返回 dictionary 中最长的字符串,该字符串可以通过 ...

  2. Pytorch和torchvision版本号对应表

    torch与torchvision版本对应表 torch及torchvision版本号查询 import torch print(torch.__version__) import torchvisi ...

  3. 【C学习笔记】day5-1 完成猜数字游戏

    #include <stdio.h> #include <stdlib.h> int main() { int s = 0; srand((unsigned)time(NULL ...

  4. IO 多路复用 select/poll/epoll ---> Reactor ---> Netty

    什么是内核态和用户态 https://blog.csdn.net/qq_41709234/article/details/124320482 参考:https://www.cnblogs.com/lo ...

  5. random及循环

    题目:使用两种方式求2-20之间偶数的和,分别使用for和while 1.使用for解法: sum=0 for i in range(2,21,2): sum+=i print ("2-20 ...

  6. Using ML.NET in Jupyter notebooks 在jupyter notebook中使用ML.NET ——No design time or full build available

    题外话:标题直接用了微软开发博客的标题.近期需要调研一个项目的可行性,github上有个相似度很高的方案,但项目是写在jupyter里的C#代码.为了能跑起来看看效果,不得已搭了套相关的环境.本来以为 ...

  7. thymeleaf checkbox的回显

    最近用到了一些thymeleaf 的界面,有写问题一并写出来,如果这篇文章能给你带来帮助不胜荣幸,如果有问题,也请予以批评和改正 第一就是涉及到复选框的一个回显:例如我是单个复选框的是否选中 在< ...

  8. (mysql笔记)GROUP_CONCAT() 把多行数据合并

    不合并查询: 合并查询: SELECT GROUP_CONCAT(id) FROM orderinfo WHERE enterpriseid = 2265 AND shopid =0 AND orde ...

  9. HID类的JoyStick描述符

    目录 应用程序改自沁恒官网的CH583EVT包中的CompoundDev工程,配合下方的描述符能够实现①直接接电脑,在设备管理器中能够查到被电脑识别为HID- compliant game conto ...

  10. Kubernetes 安装网络插件(calico)

    简介 Calico是Kubernetes生态系统中另一种流行的网络选择.虽然Flannel被公认为是最简单的选择,但Calico以其性能.灵活性而闻名.Calico的功能更为全面,不仅提供主机和pod ...