首先条件:安装jdk1.8的环境
第一步:下载jmeter安装包(/usr/local/目录下)
wget https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-5.3.tgz
如果上述下载比较慢,请用迅雷下载,并上传到linux当前路径下。
完成后解压到当前路径下 tar -zxvf apache-jmeter-5.3.tgz
第二步:配置环境参数
vim /etc/profile
新增如下内容:
export JMETER_HOME=/usr/local/apache-jmeter-5.3
export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$JMETER_HOME/lib/logkit-2.0.jar:$CLASSPATH
export PATH=$JMETER_HOME/bin:$PATH
最后让配置生效 source /etc/profile
jmeter -v 查看是否安装成功
如图所示:
第三步:修改/usr/local/apache-jmeter-5.3/bin目录下修改jmeter.sh的java环境配置
新增两行如下:
export JAVA_HOME=/usr/local/jdk1.8.0_211
export JRE_HOME=/usr/local/jdk1.8.0_211/jre
保存后退出
这一步骤,主要是解决在批量操作服务器时会报错,Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
第四步:将window下编写好的脚本文件上传linux后,执行脚本
在/usr/local/apache-jmeter-5.3 路径下生成日志文件路径 mkdir logs
在window环境下编写脚本
在window电脑上自己编写脚本,具体地址详见我的博客:window使用jmeter_感冒石头的博客-CSDN博客
编写好脚本以后就上传到linux上,这里就上传到/usr/local/apache-jmeter-5.3/bin目录下。
进入bin目录下执行脚本:sh jmeter.sh -n -t home_getSystemList_10000.jmx -l result_nice -e -o /usr/local/apache-jmeter-5.3/logs
home_getSystemList_10000.jmx 要被执行的脚本文件
result_nice 为直接的结果--测试报告(/usr/local/apache-jmeter-5.3/bin目录下生成)
/usr/local/apache-jmeter-5.3/logs 执行后的日志文件
第五步:查看或者清理日志
在/usr/local/apache-jmeter-5.3/logs 可以查看到html数据情况
在执行脚本前,先删除该logs下的所有文件, rm -rf *
再删除bin路径下result_nice目录
如果不删除,那么执行会报错,报错显示不是空的文件夹。
重点:根据上述每次压测都要删除文件目录,所以很麻烦,而且执行一个脚本命令都要修改,所以我写了一个脚本,解决了上述两个问题
脚本下载地址
sh start.sh home_getSystemList_10000 ---执行脚本、其中home_getSystemList_10000 是可变参数
同时并发测试方案多台机器
第一种方式:如果想要多台机器同时并发执行,那么让多台机器都部署配置一样,然后可以利用Shell工具中的全局变量,一个命令,全局对话框中的所有服务器都会执行当前命令。
Shell工具栏中调试出命令框
选择查看-------》撰写-------》撰写栏和撰写窗格 即可出现执行命令栏
会话栏如图所示: 这里还要选择会话类型
窗口中打开两个窗口,都到相同路径下,然后在撰写中输入ls命令,然后回车,可以看到两个对话框中已经执行该命令
第二种方式:使用阿里云ECS实例列表,选择批量操作,然后根据自己的选择手动选择实例,还是指定实例标签,
最重要一点,选择并发速率。
新增标签,并绑定ECS服务器-----》这里可以新建多个标签。比如你并发5台,8台等等,然后可以在上个界面选择多个标签。
这里我选择三台。执行如下:
重点:这里同时最多限制执行20台服务器,如果有40台服务器(弹性伸缩可以按量付费扩展出来,按小时计费,使用完毕后可以释放),可以分两组同时执行。
如果不使用标签组压测,而选择手动选择实例,那么弹性伸缩模板配置服务器名称最好每组起不用名字进行区分,方面在选项栏里面筛选
重点2:使用阿里云批量操作和远程命令存在极大问题,阿里云云助手默认ulimit -n 默认是:1024,在高并发大量测试过程发生无法打开文件报错,因为句柄数太小,修改linux 句柄数并不修改阿里云云助手句柄数,问题就在这。
解决方案:
可以尝试编辑云助手service 配置文件 /etc/systemd/system/aliyun.service
在 Service 段中增加 LimitNOFILE=800000,
然后执行
systemctl daemon-reload
systemctl restart aliyun
测试报告
聚合报告参数详解:
Label:sampler样本名称,不清楚测试结果时,修改样本测试后,会显示不同的样本名称
#Samples:样本数,执行的次数,100表示执行了100次,users(用户并发请求数) * loopCount(循环次数)
Average:平均响应时间,默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,以Transaction 为单位显示平均响应时间
Median:中位数,也就是 50% 用户的响应时间
90% Line:90% 用户的响应时间
95% Line:95% 用户的响应时间
99% Line:99% 用户的响应时间
Min:最小响应时间
Maximum:最大响应时间
Error%:错误率——错误请求数/请求总数
Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数
Received KB/Sec:每秒从服务器端接收到的数据量
Sent KB/Sec:每秒发送请求的数据量