先说结论:

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. C#窗体控件,文字随电脑分辨率自动调整大小

    一.在类中添加方法,代码如下: #region 窗体控件.字体随分辨率调整,自动调整大小 public static void SetTag(Control cons) { foreach (Cont ...

  2. LOJ3075 「2019 集训队互测 Day 3」组合数求和

    题意: 令 \(f(j)=\sum\limits_{i=0}^{n-1}\dbinom{id}{j}\) ,对于 \(0\le j <m\) ,分别求出 \(f(j)\) .答案对 \(M\) ...

  3. RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu!

    错误原因:数据有的在cpu上有的在gpu上debug:断点到出错位置查看类型,或者打印`x.is_cuda`查看修改:将cpu上的数据通过`.to(device)`加载到gpu上

  4. VMware 关于mininet

    1.mininet安装是git clone git://github.com/mininet/mininet.git       (git clone http://github.com/minine ...

  5. springmvc 能进入Controller,但是前端页面还是404

    问题现象: 1.Controller里面的方法上已经加了注解 @ResponseBody 2.能进入controller的方法里面: 3.前端返回状态码 404: 4.控制台没有异常信息: 问题原因: ...

  6. spring-boot logback 日志

    一.引入依赖 二.配置日志文件 三.完事啦!

  7. Linux,Lnmp配置Index of /索引页

    其实很简单就是修改conf配置文件 进入域名对应的vhost修改conf文件: 第一种方法 cd /usr/local/nginx/vhost/ 在清楚当前域名所对用的conf文件可以试用 ll 列出 ...

  8. Appium获取元素坐标

    文章转自:https://www.cnblogs.com/lfr0123/p/13686769.html appium做app自动化测试过程中,有时需要获取控件元素的坐标进行滑动操作.appium中提 ...

  9. P2016题解

    P2016题解 题目描述 Bob要建立一个古城堡,城堡中的路形成一棵无根树.他要在这棵树的结点上放置最少数目的士兵,使得这些士兵能瞭望到所有的路. 注意,某个士兵在一个结点上时,与该结点相连的所有边将 ...

  10. 生产中遇到的spark任务问题

    spark版本 2.2.0 日志里面的信息: WARN RowBasedKeyValueBatch: Calling spill() on RowBasedKeyValueBatch. Will no ...