8.性能测试执行
脚本调试通过之后,接下来就是正式执行过程。通常会选择window环境或者linux环境执行,两者各有优缺点:
1) Windows环境操作界面化,直观,易上手,但Windows操作系统中软件占用机器资源较多,导致资源使用率不高。一般可用于接口的并发逻辑验证或者应对一些相关检查,特别是不需要进行过大的负载
2) Linux环境操作使用命令,结果查看不太方便,但资源利用率相对较高。一般使用在正式性能测试项目中,可支持较高并发。
读者可以根据项目具体情况选择执行环境
1 Windows环境单机执行
Windows环境下执行相对简单。4.2步骤完成之后,可以直接在Jmeter的GUI上进行操作和修改参数。下面简单说明一下几个主要过程
1.1启动Jmeter并添加组件
脚本编写调试好之后,拷贝相关的依赖到jmeter,然后启动。
添加线程组、Sampler中的Java请求、后置处理器中的聚合报告等组件。其他如察看结果树、定时器等可根据需要自行添加修改线程组名称,建议和压测接口对应,见名知意,保存
1.2生成脚本并设置参数
设置参数线程数、Ramp-Up Period、循环次数等必要参数信息
1) 线程数:即用户数,多少个线程就是多少个用户
2) Ramp-Up Period:线程启动准备期,即所有线程全部启动的时间
3) 循环次数:勾选“永远”,则一直执行,直到崩溃或手动停止。
例如:设置100个线程,1S内全部启动所有线程,循环次数为100
设置好参数之后,保存脚本
1.3资源监控器
打开Windows资源监控器。执行时,可实时关注资源消耗情况,如:CPU使用率、内存
1.4观测服务器日志和监控
打开应用服务器,实时观察请求日志和资源监控
1.5测试场景执行
准备工作就绪后,就可以按照测试方案中设计的测试用例来执行。
执行前可打开Jmeter页面的日志,方便观察
开始执行
1.6测试结果收集
执行完成后,收集执行结果和监控结果
开始执行新的场景之前,先清除上次的结果数据,避免混乱
2 Linux环境单机执行
2.1安装JDK
得到Linux机器后,首先要安装JDK,这是Jmeter能够正常运行的前提
(1) 上传并解压jdk压缩包jdk-8u092-linux-x64.tar.gz,建议把软件都安装到/usr/local/下,如/usr/local/jdk1.8.0_92
(2) 用vim编辑器打开/etc/profile文件,在文件尾部加入环境变量的定义
(3) 输入命令使配置立即生效:source /ext/profile
(4) 查看java版本,有下图所示即表示安装成功
注:如果使用的是已经配置好的Linux机器,通过java -version确认JDK安装成功即可
2.2在Windows下生成并保存脚本
在Windows下生成脚本,并且调试通过,保存脚本至Jmeter工具相关目录下,可自行定义:建议放在bin目录下
2.3上传Jmeter至Linux压测机
把Jmeter工具和脚本一起压缩,然后上传压缩包(rz命令,或FileZilla等工具)至压测Linux机器,并解压(unzip)
2.4使用命令行启动执行
在Linux环境下,则需要利用jmeter.sh的shell脚本,使用命令行来执行
- 前端执行命令:sh jmeter.sh -n -t cutPay.jmx -l log/cutPay.jtl
意思是命令启动后,不能关闭和退出当前执行页面及操作,否则执行自动退出
- 后端执行命令:nohup sh jmeter.sh -n -t cutPay.jmx -l log/cutPay.jtl &
意思是命令启动后,命令会一直在执行。中止执行需要kill当前命令的进程
执行日志可在jmeter/bin/jmeter.log下查看
2.5命令参数说明
以此命令为例:sh jmeter.sh -n -t cutPay.jmx -l log/cutPay.jtl
-h 帮助:打印出有用的信息并退出
-n 非GUI模式:在非 GUI 模式下运行 JMeter
-t 测试文件:要运行的 JMeter 测试脚本文件
-l 日志文件:记录结果的文件
-r 远程执行:启动远程服务
-H 代理主机:设置 JMeter 使用的代理主机
-P 代理端口:设置 JMeter 使用的代理主机的端口号
2.6执行结果的查看
sh jmeter.sh -n -t cutPay.jmx -l log/cutPay.jtl,执行完成后
1) 命令将执行结果输入cutPay.jtl中,把该文件导出至Windows环境下
2) 在Windows系统下打开Jmeter,创建一个线程组,添加监听器。即可查看结果,如下图:
2.7执行中的问题
1) 执行中可能碰到如下错误,表示:jmeter.sh执行权限不够。
解决方案,赋予执行权限即可
命令:chmod 777 jmeter.sh
执行后,权限为:-rwxrwxrwx表示,读写执行权限均有
2) 使用nohup时,可能未找到这个命令,报错如下
-bash: nohup: command not found
解决方案:
① 通过which nohup,找到该命令所在目录
② 打开.bash_profile,添加到PATH下
③ 执行命令:source ~/.bash_profile;使文件生效
3 Windows环境分布式执行
Jmeter工具本身支持分布式压测,即多台机器同时执行同一个脚本,然后统计结果。
3.1分布式压测条件
分布式压测,机器分为控制机(controller)和执行机(slave),有几个条件必须满足:
- 执行机和控制机必须在同一个网段之内
- 压测机也必须安装相同版本的Jmeter和JDK
3.2修改Jmeter配置
1) 修改控制机中apache-jmeter-3.2\bin\jmeter.properties中配置
修改内容为:remote_hosts=xx,xx代表的是压力机的ip。如果是多个压力机,之间使用【,】分隔,如下图所示
12.7.0.0.1:1099表示当前主机,1099为设置的端口号,可以修改
2) 修改执行机中apache-jmeter-3.2\bin\jmeter.properties中配置
修改内容为:取消server_port=1099前的“#”,端口号和控制机配置文件中保持一致
3.3启动执行机
打开apache-jmeter-3.2\bin\jmeter-server.bat,如下图所示:
3.4启动控制机
打开apache-jmeter-3.2\bin\jmeter.bat,添加执行脚本,通过运行-->远程启动或者远程全部启动,即可启动对应执行机或者全部执行机。运行结束之后,查看聚合报告
4 Linux环境分布式执行
Linux环境分布式配置和Windows环境配置完全相同,可参考5.3.2进行修改
4.1启动执行机
启动执行机:&-->表示后台运行
方法一:./jmeter-server
方法二:./jmeter-server &
方法三:./jmeter-server -Djava.rmi.server.hostname=192.168.85.217 &
4.2启动控制机
方法一:nohup ./jmeter -n -t cutPay.jmx -R 192.168.85.217,192.168.85.216,192.168.85.215,192.168.85.214,192.168.85.213,192.168.85.212 -l log/cutPay.jtl &
方法二:./jmeter -n -t cutPay.jmx -R 192.168.85.217,192.168.85.216,192.168.85.215,192.168.85.214,192.168.85.213,192.168.85.212 -l log/cutPay.jtl