文章目录
- jdk安装
- jmeter环境搭建(不管是控制机还是压测机)
- 前置条件
- master机器配置
- slave机器配置
- master机器运行
- 执行结果说明
jdk安装
yum install -y java-1.8.0-openjdk
jmeter环境搭建(不管是控制机还是压测机)
- mkdir /usr/local/jmeter
- 将apache-jmeter-5.4.1.zip丢到/usr/local/jmeter目录
- 安装zip工具:yum install -y unzip zip
- cd /usr/local/jmeter
- 解压到当前文件夹:unzip apache-jmeter-5.4.1.zip
- 删除压缩包:rm -rf apache-jmeter-5.4.1.zip
- 配置环境变量
- vi /etc/profile,文件最后追加环境变量
export JMETER_HOME=/usr/local/jmeter/apache-jmeter-5.4.1
export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH
export PATH=$JMETER_HOME/bin:$PATH - source /etc/profile使配置生效
- 授权 cd /usr/local/jmeter/apache-jmeter-5.4.1/bin
chmod -R 777 jmeter 否则报错 - 验证jmeter是否安装成功:jmeter-v 若提示permission denied, cd /usr/local/jmeter/apache-jmeter-5.4.1/bin chmod —R 777 jmeter
47,100.91.218 10.0.0.116机器为master机
106.14.112.132 10.0.0.42为slave1机
前置条件
在所有期望运行jmeter作为负载机的机器上安装jmeter,并确定其中一台机器作为控制机control,其他机器作为代理机agent;
所有机器上的jmeter版本需保持一致;
所有机器上的jdk版本需保持一致;
确保jmeter及jdk的环境变量配置正确;
如果需要使用csv进行参数化,参数文件必须拷贝到每台代理机agent上,且路径必须一致;
需确保所有机器的防火墙都处于关闭状态;
确保控制机control与所有代理机agent都处于同一局域网内。
master机器配置
在调度机上修改bin/jmeter.properties,添加执行机的IP及端口(使用-r启动所有从机)1099是默认的rmi通信端口,取消server.rmi.ssl.disable=false的中注释并将false改为true(否则会报“Exception creating connection to:192.16..;nested exception is:java.io.FileNotFoundException:rmi_keystore.jks(系统找不到指定的文件)”错误)
若master机也做slave机,配置master机内网ip,不要配置127.0.0.1
slave机器配置
访问执行机上JMeter的bin路径,修改jmeter.properties,
server.rmi.ssl.disable=true, httpclient.timeout=1000;修改jmeter-server, 去掉RMI_HOST_DEF前面的#,未尾的XX改成当前主机ip。
执行imeter-server
若master机器也要做slave机,同样操作
若有多台,重复操作
master机器执行telnet 10.0.0.42 1099
master机器运行
Windows:运行bin目录下的jmeter.bat 文件打开jmeter;
MacOs/Linux:启动jmeter,启动命令./jmeter.sh
- 页面执行
- 命令行执行
-n : 表示non gui mode 非图形化模式
-t : testplan 后跟要运行的jmeter脚本路径和脚本名称
-l : 指定生成测试结果的保存文件,jtl 文件格式
-r : 启动所有远程的代理机agent(用在分布式测试场景下,不是分布式只是单点就不需要-r)
-R : 指定某些机器
-H : 设置Jmeter使用的代理主机
-P : 设置Jmeter使用的代理主机的端口
-e : 测试结束后,生成测试报告
-o : 指定测试报告的存放位置
执行结果说明
控制机control会将jmeter脚本分发至每一台要参与本次测试的代理机agent,在执行的过程中不会进行负载均衡,即脚本设置的线程组为100,那么每台代理机agent也将会启动100个线程来进行测试;
远程启动测试后,所有代理机会执行与控制机一样的脚本;
测试执行结束后,控制机control会收集所有的代理机agent的执行结果并做汇总;
执行日志信息,可在生成的jmeter.log跟jmeter-server.log查看,内含代理机的所有执行信息。
举例说明:
控制器control的脚本设置的线程组为100,接口总执行次数控制在10000,代理机信息有两台,那么测试执行结束之后,最终的结果将会是两台代理机agent的总和;
线程总数:100+100=200
接口执行次数:10000+10000=20000
其余信息雷同。