Jmeter 使用入门

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

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

  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
  1. 创建一个线程组
  • 点击测试计划,右键添加Threads,选择线程组
  • 设置线程组参数
  • 线程数:用户数量,100线程就模拟100个用户访问
  • Ramp-Up Period(in seconds):每个线程用户执行间隔,0代表并发访问
  • 循环次数:每个用户请求的次数,永远就是不停的请求
  1. 创建HTTP请求
  • 右键线程组-Sampler-HTTP请求
  1. 配置HTTP请求
  • 服务器IP
  • 端口号
  • 路径是端口号后面的,例如 /xxx.html 或 /api
  1. 添加运行结果分析监听器
  • 右键线程组-添加-监听器-
  • 图形结果,聚合报告,查看结果树

效果图如下

image.png

HTTP 请求

image.png

聚合报告

image.png

限制某一个IP访问次数

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

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秒执行,

	# 超过超时时间则进行故障转移
        location /{
	#每秒每IP限制访问1次,缓存值为5
	    limit_req zone=allips burst=5 nodelay;
            root   static;
            index  index.html index.htm;
	    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加入如下代码
    # 连接数限制
    location /{
	limit_conn addr 1;
    }
}

Q.E.D.


知道的越多,不知道的越多