使用Nginx进行限流

使用Nginx进行限流


前言

在阅读这篇之前可以去看博主的windows10系统下安装nginx的安装并配置! 学习安装配置nginx


Jmeter使用入门

Apache Jmeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。它可以用于对静态的和动态的资源的性能进行测试。也可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你还可以使用它做性能的图形分析或在大并发下负载测试你的服务器/脚本/对象。

(注:jmeter下载网址:http://jmeter.apache.org/download_jmeter.cgi)

完成后首先切换为我们熟悉的简体中文环境:

1. 首先打开jmeter软件,发现显示的为英文
2. 首先可以通过jmeter的界面工具来设置语言为中文 点击菜单栏【Options】按钮
3. 然后依次单击【Choose language】>【Chinese(simplified)】...
4. 设置完成查看效果
5. 也可以通过设置jmeter.properties配置文件来设置语言为中文

jmeter使用参考如下:

  1. 运行Jmeter:
    • 安装JDK环境
    • 打开文件夹运行bin目录下的 jmeter.bat即可进入jmeter的主界面 启动不了主界面尝试直接启动bin目录下的ApacheJMeter.jar
  2. 创建一个线程组
    • 点击测试计划,右键添加Threads,选择线程组
  3. 设置线程组参数
    • 线程数:用户数量,100线程就模拟100个用户访问
    • Ramp-Up Period(in seconds):每个线程用户执行间隔,0代表并发访问
    • 循环次数:每个用户请求的次数,永远就是不停的请求
  4. 创建HTTP请求
    • 右键线程组-Sampler-HTTP请求
  5. 配置HTTP请求
    • 服务器IP
    • 端口号
    • 路径是端口号后面的,例如 /xxx.html
  6. 添加运行结果分析监听器
    • 右键线程组-添加-监听器-
    • 图形结果,聚合报告,查看结果树

效果图如下

创建的压测线程组
在这里插入图片描述
HTTP 请求
在这里插入图片描述
聚合报告
在这里插入图片描述

限制某一个IP访问次数

nginx限制每个IP每秒访问1次,选择nginx.conf配置文件进行配置

在这里插入图片描述

找到http下的这个

http {
    # 限制时间段请求次数,开辟了一块allips内存来统计每秒ip访问次数 
	limit_req_zone $binary_remote_addr zone=allips:10m rate=1r/s;#1r/s表示每秒访问1次 
	#限制每ip每秒不超过20个请求,漏桶数burst为5 #brust的意思就是,如果第1秒、2,3,4秒请求为19个, 
	#第5秒的请求为25个是被允许的。 
	#但是如果你第1秒就25个请求,第2秒超过20的请求返回503错误。 
	#nodelay,如果不设置该选项,严格使用平均速率限制请求数, 
	#第1秒25个请求时,5个请求放到第2秒执行, 
	#设置nodelay,25个请求将在第1秒执行。

    server {
        listen       8086;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

		# 超过超时时间则进行故障转移
        location /chenOne {
			#每秒每IP限制访问1次,缓存值为5
			limit_req zone=allips burst=5 nodelay;
			# 放置静态资源的地方
            root   static;# (d:/nginx/static)
			# 访问的首页
            index  index.html index.htm;
			# 进行负载均衡的配置指向地址
			proxy_pass http://tomcate_server;
			proxy_connect_timeout 3;#默认单位是秒 
			proxy_read_timeout 3; 
			proxy_send_timeout 3;
        }

执行测试用例,看到结果是:每秒放行的请求次数不超过允许和缓冲次数之和。

至于结果要你自己去测试你自己的接口喽


限制某一个IP瞬间并发量

Nginx限制某一个Ip瞬间并发量为1,选择nginx.conf配置文件进行配置

http{
    # 限制并发量,开辟出一块addr内存来统计IP并发量 
	limit_conn_zone $binary_remote_addr zone=addr:10m;
    
    # 找到location加入如下代码
    # 连接数限制
	limit_conn addr 1;

至于结果要你自己去测试你自己的接口喽


到这里:使用Nginx进行限流!分享完毕了,快去试试吧!


最后

  • 更多参考精彩博文请看这里:《陈永佳的博客》

  • 喜欢博主的小伙伴可以加个关注、点个赞哦,持续更新嘿嘿!


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈永佳

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值