当前位置: 首页 > news >正文

Nginx限流熔断

一、Nginx限流熔断

Nginx 是一款流行的反向代理和负载均衡服务器,也可以用于实现服务熔断和限流。通过使用 Nginx 的限流和熔断模块,比如:ngx_http_limit_req_module 和 ngx_http_limit_conn_module,可以在代理层面对服务进行限流和熔断。

中文文档:https://nginx.cn/doc/index.html

在这里插入图片描述
针对高并发的场景。Nginx的限流主要是两种方式:

  • 限制访问频率
  • 限制并发连接数。

二、限制请求访问频率

Nginx中使用 ngx_http_limit_req_module模块来限制请求的访问频率,基于漏桶算法原理实现。

使用 nginx的 limit_req_zone 和 limit_req 两个指令。

1、基本语法

limit_req_zone:限制单个IP的请求处理速率。

基本语法:limit_req_zone key zone rate

  • key :定义限流对象,binary_remote_addr 是一种key,表示基于 remote_addr(客户端IP) 来做限流,binary_ 的目的是压缩内存占用量。
  • zone:定义共享内存区来存储访问信息, myRateLimit:10m 表示一个大小为10M,名字为myRateLimit的内存区域。1M能存储16000 IP地址的访问信息,10M可以存储16W IP地址访问信息。
  • rate 用于设置最大访问速率,rate=10r/s 表示每秒最多处理10个请求。Nginx 实际上以毫秒为粒度来跟踪请求信息,因此 10r/s 实际上是限制:每100毫秒处理一个请求。这意味着,自上一个请求处理完后,若后续100毫秒内又有请求到达,将拒绝处理该请求。
http {# 请求限流定义1:# - $binary_remote_addr:限制对象(客户端)# - zone:定义限制(策略)名称# - 10m:用十兆空间记录访问次数# - rate:每秒10次的请求处理速率limit_req_zone $binary_remote_addr zone={limits-name}:10m rate=10r/s;# 请求限流定义2:# - $server_name:限制对象,对指定服务器请求的限制limit_req_zone $server_name zone={limits-name}:10m rate=10r/s;server {location /search/ {# 引用以上定义的限流策略,做以下设定(漏桶方式)# - burst:最多接收6个排队用户IP(从0开始计数),处于等待处理状态(容量)# - nodelay:超出排队之外的更多请求,拒绝并返回503(溢出)limit_req zone={limits-name} [burst=5] [nodelay];}}
}

针对流量突然增大,超出的请求无法处理时,可以通过 Nginx提供的 burst 参数来解决突发流量的问题,并结合 nodelay 参数一起使用。

  • burst 译为突发、爆发,表示在超过设定的处理速率后能额外处理的请求数。
  • nodelay:超出排队之外的更多请求,拒绝并返回503(溢出)

2、实例

第一步:修改Nginx的配置文件

http {# 请求限流定义:limit_req_zone $binary_remote_addr zone=myRateLimit:10m rate=1r/s;server {listen       80;server_name  192.168.xxx.xxx;  # 指定虚拟主机的IP,或者外网域名location / {root   html;index  index.html index.htm; proxy_pass  http://192.168.xxx.xxx:8080;limit_req zone=myRateLimit  burst=5  nodelay;}}
}

第二步:重启Nginx

修改 nginx完之后,保存退出,重启Nginx。

# 先执行停止命令再执行启动命令
[root@centos7 sbin]# /usr/local/nginx/sbin/nginx -s quit
[root@centos7 sbin]# /usr/local/nginx/sbin/nginx

第三步: 浏览器快速访问

在这里插入图片描述

二、限制并发连接数

Nginx 的 ngx_http_limit_conn_module模块提供了对资源连接数进行限制的功能。

使用 limit_conn_zone 和 limit_conn 两个指令。

1、基本语法

http_limit_conn:单个IP同时允许的连接限制。

http {# 连接限流定义1:# - $binary_remote_addr:限制对象(客户端)# - zone:限制自定义名称# - 10:内存中用10兆空间存储连接记录limit_conn_zone $binary_remote_addr zone={limits-name}:10m;# 请求限流定义2:# - $server_name:限制对象,对指定服务器请求的限制limit_conn_zone $server_name zone={limits-name}:10m;server {location /search/ {# 限制单个IP同时允许建立多少连接(并发限制)limit_conn {limits-name} 1;}}
}

2、实例

第一步:修改Nginx的配置文件

http {# 请求限流定义:limit_conn_zone $binary_remote_addr zone=myConnLimit:10m;server {listen       80;server_name  192.168.xxx.xxx;  # 指定虚拟主机的IP,或者外网域名location / {root   html;index  index.html index.htm; proxy_pass  http://192.168.xxx.xxx:8080;# 限制单个IP同时允许建立5个连接limit_conn zone=myConnLimit 5;}}
}

第二步:重启Nginx

修改 nginx完之后,保存退出,重启Nginx。

# 先执行停止命令再执行启动命令
[root@centos7 sbin]# /usr/local/nginx/sbin/nginx -s quit
[root@centos7 sbin]# /usr/local/nginx/sbin/nginx

第三步: 浏览器快速访问

在这里插入图片描述

– 求知若饥,虚心若愚。

相关文章:

Nginx限流熔断

一、Nginx限流熔断 Nginx 是一款流行的反向代理和负载均衡服务器,也可以用于实现服务熔断和限流。通过使用 Nginx 的限流和熔断模块,比如:ngx_http_limit_req_module 和 ngx_http_limit_conn_module,可以在代理层面对服务进行限流…...

QQ登录的具体流程

文章目录 网站授权QQ登录QQ登录的完整流程代码示例1. 添加依赖2. 配置文件3. 实现Service4. 创建Controller 网站授权QQ登录 首先需要去QQ互联申请应用填写网站的相关信息,以及回调地址,需要进行审核。申请流程暂时不说了,百度一下挺多申请失…...

用JMeter对HTTP接口进行压测(一)压测脚本的书写、调试思路

文章目录 安装JMeter和Groovy为什么选择Groovy? 压测需求以及思路准备JMeter脚本以及脚本正确性验证使用Test Script Recorder来获取整条业务线上涉及的接口为什么使用Test Script Recorder? 配置Test Script Recorder对接口进行动态化处理处理全局变量以…...

接着聊聊如何从binlog文件恢复误delete的数据,模拟Oracle的闪回功能

看腻了文章就来听听视频演示吧:https://www.bilibili.com/video/BV1cV411A7iU/ delete忘加where条件(模拟Oracle闪回) 操作基本等同于上篇:再来谈谈如何从binlog文件恢复误update的数据,模拟Oracle的回滚功能 原理&a…...

计算机竞赛 深度学习机器视觉车道线识别与检测 -自动驾驶

文章目录 1 前言2 先上成果3 车道线4 问题抽象(建立模型)5 帧掩码(Frame Mask)6 车道检测的图像预处理7 图像阈值化8 霍夫线变换9 实现车道检测9.1 帧掩码创建9.2 图像预处理9.2.1 图像阈值化9.2.2 霍夫线变换 最后 1 前言 🔥 优质竞赛项目系列,今天要分…...

pyqt5使用经验总结

pyqt5环境配置注意: 安装pyqt5 pip install PyQt5 pyqt5-tools 环境变量-创建变量名: 健名:QT_QPA_PLATFORM_PLUGIN_PATH 值为:Lib\site-packages\PyQt5\Qt\plugins pyqt5经验2: 使用designer.exe进行设计&#xff1…...

【MQTT】mosquitto库中SSL/TLS相关API接口

文章目录 1.相关API1.1 mosquitto_tls_set1.2 mosquitto_tls_insecure_set1.3 mosquitto_tls_opts_set1.4 mosquitto_tls_insecure_set1.5 mosquitto_tls_set_context1.6 mosquitto_tls_psk_set 2.示例代码 Mosquitto 是一个流行的 MQTT 消息代理(broker&#xff09…...

假期题目整合

1. 下载解压题目查看即可 典型的猪圈密码只需要照着输入字符解开即可得到答案 2. 冷门类型的密码题型,需要特意去找相应的解题思路,直接百度搜索天干地支解密即可 3. 一眼能出思路他已经给了篱笆墙的提示提示你是栅栏密码对应解密即可 4. 最简单的社会主…...

Redisson—分布式服务

一、 分布式远程服务(Remote Service) 基于Redis的Java分布式远程服务,可以用来通过共享接口执行存在于另一个Redisson实例里的对象方法。换句话说就是通过Redis实现了Java的远程过程调用(RPC)。分布式远程服务基于可…...

volatile使用方法

volatile使用方法 编译优化。使用等级3的话,可能将优化了一些变量。 这为什么会开启等第三呢?这是关于单片机的内存容量比较小,所以开启优化的话,可以可以省一些空间,但是如果。会出现些变量的问题,需要通过…...

提升您的 Go 应用性能的 6 种方法

优化您的 Go 应用程序 1. 如果您的应用程序在 Kubernetes 中运行,请自动设置 GOMAXPROCS 以匹配 Linux 容器的 CPU 配额 Go 调度器 可以具有与运行设备的核心数量一样多的线程。由于我们的应用程序在 Kubernetes 环境中的节点上运行,当我们的 Go 应用程…...

计算摄像技术02 - 颜色空间

一些计算摄像技术知识内容的整理:颜色视觉与感知特性、颜色空间和基于彩色滤镜阵列的彩色感知。 文章目录 一、颜色视觉与感知特性 (1)色调 (2)饱和度 (3)明度 二、颜色空间 (1&…...

Pytorch笔记之分类

文章目录 前言一、导入库二、数据处理三、构建模型四、迭代训练五、模型评估总结 前言 使用Pytorch进行MNIST分类,使用TensorDataset与DataLoader封装、加载本地数据集。 一、导入库 import numpy as np import torch from torch import nn, optim from torch.uti…...

【目标检测】——PE-YOLO精读

yolo,暗光目标检测 论文:PE-YOLO 1. 简介 卷积神经网络(CNNs)在近年来如何推动了物体检测的发展。许多检测器已经被提出,而且在许多基准数据集上的性能正在不断提高。然而,大多数现有的检测器都是在正常条…...

Java 数组转集合

数组转集合 如果仅仅这样转化Arrays.asList(数组)&#xff0c;导致集合只能查询&#xff0c;无法进行其他操作&#xff0c;因此&#xff0c;对该方法进行优化&#xff1a; List<实体> list1 new ArrayList<>(Arrays.asList(数组))以上方法就可以使用集合的所有操…...

Elasticsearch:ES|QL 查询语言简介

警告&#xff1a;此功能处于技术预览阶段&#xff0c;可能会在未来版本中更改或删除。 Elastic 将尽最大努力解决任何问题&#xff0c;但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。在目前的 Elastic Stack 8.10 中此功能还没有提供。 Elasticsearch 查询语言 (ES|…...

qt qml中listview出现卡顿情况时的常用处理方法

如果在qt QML中使用ListView时出现卡顿情况&#xff0c;可能是因为渲染大量的数据或者在模型中进行复杂的数据处理。以下是常用的解决方法&#xff1a; 1. 设置ListView的缓存策略&#xff1a;通过设置ListView的cacheBuffer属性为适当的值&#xff0c;可以提高滚动的流畅性。…...

Elasticsearch基础操作演示总结

一、索引操作 &#xff08;一&#xff09;创建索引 创建Elasticsearch&#xff08;ES&#xff09;索引是在ES中存储和管理数据的重要操作之一。索引是用于组织和检索文档的结构化数据存储。 当创建Elasticsearch索引时&#xff0c;通常需要同时指定索引的设置&#xff08;Se…...

Spring 作用域解析器AnnotationScopeMetadataResolver

博主介绍&#xff1a;✌全网粉丝近5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经…...

如何发布一个 NPM 包

首先初始化: npm init 文件夹结构 .gitignore Git 库忽略文件清单.npmignore 不包括在 npm 注册库中的文件清单LECENSE 模块的授权文件README.md 说明文档bin 保存模块可执行文件的文件夹doc 保存模块文档的文件夹example 保存模块实际示例lib 保存模块代码man 保存模块的手册…...

告别龟速下载!用阿里云Maven仓库和离线驱动包,5分钟搞定DBeaver所有JDBC驱动配置

极速配置DBeaver JDBC驱动的双轨方案&#xff1a;阿里云Maven加速与离线整合包实战 每次打开DBeaver准备连接数据库时&#xff0c;看着进度条缓慢爬升的驱动下载界面&#xff0c;你是否也感到焦虑&#xff1f;特别是在紧急排查生产环境问题的关键时刻&#xff0c;这种等待简直让…...

电池创新如何跨越量产鸿沟:从实验室到工厂的工程化实践

1. 从实验室到工厂&#xff1a;电池创新的“量产魔咒”最近几年&#xff0c;电池行业绝对是资本和媒体眼中的“香饽饽”。动辄数十亿、上百亿美元的投资砸向新的生产设施和前沿技术&#xff0c;目标直指电动汽车、智能电网乃至整个智慧城市的能源基石。新闻稿里&#xff0c;我们…...

60 秒应急窗口下 AI 钓鱼攻击防御体系构建与工程实践

摘要 2026 年网络钓鱼攻击呈现秒级入侵、全域渗透、AI 驱动的显著特征&#xff0c;钓鱼邮件抵达至用户输入敏感信息的中位时间仅 60 秒&#xff0c;勒索软件攻击频率约每 2 秒一起&#xff0c;AI 自动化鱼叉式钓鱼点击率高达 54%&#xff0c;传统防御机制已无法适配当前威胁节奏…...

MATLAB图像处理实战:用imfindcircles函数搞定工业零件瑕疵检测(附完整代码)

MATLAB图像处理实战&#xff1a;工业零件瑕疵检测的精准圆识别技术 在工业自动化质检领域&#xff0c;圆形特征的精准检测直接关系到产品质量控制的可靠性。轴承、垫片、齿轮等标准件上的孔洞缺失或尺寸偏差&#xff0c;往往预示着潜在的产品缺陷。传统人工检测不仅效率低下&am…...

Tarjan算法:从DFS序到强连通分量的寻路指南(附C++实战与缩点技巧)

1. 从迷宫探索到强连通王国&#xff1a;Tarjan算法的生活隐喻 想象你正在探索一座巨大的迷宫&#xff0c;手里拿着粉笔和记事本。每走到一个新的岔路口&#xff0c;你就在墙上标记数字&#xff08;第一个到的路口标1&#xff0c;第二个标2...&#xff09;&#xff0c;这就是DFS…...

视频字幕提取神器:如何让AI帮你自动转录硬字幕?

视频字幕提取神器&#xff1a;如何让AI帮你自动转录硬字幕&#xff1f; 【免费下载链接】video-subtitle-extractor 视频硬字幕提取&#xff0c;生成srt文件。无需申请第三方API&#xff0c;本地实现文本识别。基于深度学习的视频字幕提取框架&#xff0c;包含字幕区域检测、字…...

2026最权威的六大降AI率助手实际效果

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在把学术成果提交到知网平台以前&#xff0c;针对借助生成式AI辅助而产出的内容去进行合规化…...

中兴光猫工厂模式解锁终极指南:3步开启Telnet高级权限

中兴光猫工厂模式解锁终极指南&#xff1a;3步开启Telnet高级权限 【免费下载链接】zteOnu A tool that can open ZTE onu device factory mode 项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu 中兴光猫工厂模式解锁工具zteOnu是一款专为网络爱好者和技术人员设计…...

【仅限首批Early Access用户】Claude 3.5 Sonnet的“动态温度调节”机制详解:如何让模型在严谨性与创意性间智能切换?

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Claude 3.5 Sonnet新功能详解 Anthropic 正式发布的 Claude 3.5 Sonnet 在推理速度、多模态理解与工具调用能力上实现显著跃升&#xff0c;尤其在代码生成与结构化输出方面表现突出。该模型原生支持 JS…...

用Python和Matlab可视化高斯分布融合:从理论到代码,理解卡尔曼滤波的‘信任权重’

高斯分布融合的可视化实践&#xff1a;用Python与Matlab揭秘卡尔曼滤波的信任机制 在传感器融合、机器人定位和金融预测等领域&#xff0c;我们常常需要将多个不确定信息源的数据进行整合。高斯分布&#xff08;正态分布&#xff09;作为描述不确定性的黄金标准&#xff0c;其融…...