写在前面:
最近,在忙于做React SSR的项目,在部署node服务器的时候,为了保证服务器能在大流量压力下正常运转,通常 需要对服务器进行 压力测试。本文将基于jmeter测试工具,讲述下压力常用的压力测试方法,以及操作步骤。
工具使用比较简单,所以如果认真按照本文说明,很方便上手。
注意:本文基于Mac进行测试
一、准备工作
1.1 安装JDK8 以上版本
因为,jmeter进行并发测试,是基于java 同时 启动多个线程请求我们服务器的方式,所以在安装工具之前,需要先安装JDK。
JMeter的最新版本是5.0,JMeter 5.0需要Java 8、Java 9。
JDK - 下载地址,历史版本下载地址
根据自己的系统选择相关的版本,下载并安装,一路 继续 就行,安装之后,
一定要记得设置一下 环境变量,否则在命令行运行java的会找不到。
我相信上面的步骤,你一定能搞定,打开控制台,输入:
java -version
显示如下,表示设置成功。
1.2 安装 jmeter5 版本
Jmeter - 下载地址,历史版本下载地址
这里选择Binaries资源中的任意一个就行,下载之后,是一个压缩包(tgz或者zip),然后解压缩,可以用命令行解压,也可以用解压工具解压。解压出来的程序,就是jmeter的运行所有的程序。
1.3 启动jmeter的GUI客户端
进入jmeter的解压路径,下的/bin下面,(bin下面都是程序的可执行脚本存放的位置),然后执行:
sh jmeter
看到这一些输出之后,随后会启动一个jmeter的GUI界面,如下,
表示jmeter已经成功安装,并成功运行了。
1.4 将操作语言设置为Chinese,如果是英语学霸,可以略过
设置完之后,可以开始下面的压测之旅了。
二、参数设置
正式开始压测之前,想跟大家提前说下,压力测试体现出来的QPS的值,和你机器的性能有关,因为我们用自己的mac压测的时候,发现测试服务器的QPS的值最大是100。
所以,如果你想测试服务器QPS 是否能 高于100 的时候,最好用服务器装上jmeter压。
2.1 添加压测http请求的配置
操作:添加 - 配置元件 - HTTP请求默认值
这里添加一个,http的默认配置控制器,用于配置,本次压测的目标服务器路径和属性。
2.2 添加一个线程组
操作:添加 - 线程(用户)- 线程组
线程组,就是表示,设置你要同时,用java启动 多少个线程,用 怎样的延时,用 怎样的循环方式,进行请求,用于测试服务器。比如下面的配置:
Ramp-up:决定多长时间启动所有线程。如果使用10个线程,ramp-up period是100秒,那么JMeter用100秒使所有10个线程启动并运行。每个线程会在上一个线程启动后10秒(100/10)启动。Ramp-up需要要充足长以避免在启动测试时有一个太大的工作负载,并且要充足小以至于最后一个线程在第一个完成前启动。
上面的配置表示,本次测试,我们要在1s内启动 30个线程,然后无限循环的去请求服务器,进行压力测试。
2.3 添加聚合报告,统计聚合
操作:添加 - 监听器 - 聚合报告 (注意这里,一定要在 线程组 上面添加)
聚合报告会对所有压力测试,进行综合统计,给出一些平均指标
这里的值,在下面测试开始,给大家详细说一下,这里添加上即可。
2.4 添加查看请求结果的树
操作 :添加 - 监听器 - 察看结果树(注意这里,一定要在 线程组 上面添加)
结果树会统计每一次压测请求的详细过程,包括请求、响应的详细内容。
2.5 添加http请求取样器
操作:添加 - 取样器 - HTTP请求 (注意这里,一定要在 线程组 上面添加)
HTTP取样器,帮组我们设置,本次压测进行的各种请求类型,包括get、post等等常用的http的request的types。
三、进行压力测试
测试目标:GET https://www.biadu.com/index.html 这个路径,配置各项如下:
3.1 配置http默认属性如下:
协议:https
域名:www.baidu.com
端口:443 (默认)
3.2 配置http请求取样器:
方法:GET
路径:/index.html
3.3 点击开始测试
查看聚合报告,查看整体的测试报告
查看 察看结果树,查看每一次请求的结果
四、测试总结
以上就是一次压力测试的基本的配置 和 操作步骤。按照上面的步骤,相信你也能很快的掌握压力测试的基本操作和部分原理。
也希望本篇教程能帮组你。
当然,如果本文有什么表述欠佳,或者表述不准的地方,请不吝指出。感谢 。
相关链接:
柳丁Jason Chen:React SSR 上车指南 (一)zhuanlan.zhihu.com