jmeter分布式与non-gui的使用
Jmeter
下载
1.jdk1.8以上就行 输入java -version
2.jmeter安装包http://jmeter.apache.org/download_jmeter.cgi
window下配置环境变量
0.安装jmeter
1.JMETER_HOME=D:\apache-jmetes\apache-jmeter-4.0
2.CLASSPATH=%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar; %JMETER_HOME%\lib\jorphan.jar;
3.找到系统path加上%JMETER_HOME%\bin就行了
4.直接在cmd输入jmeter就运行起来了
linux下配置环境变量
0.将jmeter包解压,chmod -R 777 /opt/apache-jmeter-2.13 加权限
1.安装jdk1.8以上就行
2.vi /etc/profile
3.加上这句话 export PATH=/opt/apache-jmeter-2.13/bin/:$PATH
4.source /etc/profile
5.jmeter 直接敲jmeter运行
jmeter分布式压测调度机ip配置
使用Jmeter实现分布式压测的时候,当出现1.windows调度机能够连接到linux负载机(也能远程执行),但是没有结果返回;2. Windows调度机调用Linux负载机的时候卡死。可以试试下面的步骤进行解决
方案一:进入jmeter的bin目录下,按住shift点击鼠标右键,在此处打开窗口

执行jmeter -Djava.rmi.server.hostname=192.168.1.182(改成window调度机的ip)

方案二:修改jmeter.bat启动文件
找到bin目录下的jmeter.bat,编辑它
Jmeter4.0如果没有做过修改,默认是图里的配置

改为

代码如下:
set rmi_host=-Djava.rmi.server.hostname=192.168.1.182(改成window调度机的IP)
set ARGS=%JAVA9_OPTS% %DUMP% %HEAP% %VERBOSE_GC% %GC_ALGO% %DDRAW% %SYSTEM_PROPS% %JMETER_LANGUAGE% %RUN_IN_DOCKER% %rmi_host%
搞定了我们来看看原理
这种情况一般会出现在电脑里有多块网卡的情况

Windows调度机的jmeter启动的时候没有使用我们需要的网卡的ip,负载机找不到调度机,所以各种问题就出现了。
non-gui
non-gui形式下对于性能更加准确(而gui形式就是我们在window用的图形界面) 在linux/windows下 vi jmeter.proerties 查找remote remote_hosts=127.0.0.1 (保证本地) 运行在bin目录下 jmeter -n -t bugfree新建.jmx -l listener.jtl -h 帮助 -> 打印出有用的信息并退出 -n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter -t 测试文件 -> 要运行的 JMeter 测试脚本文件 -l 日志文件 -> 记录结果的文件 -r 远程执行 -> 启动远程服务 -H 代理主机 -> 设置 JMeter 使用的代理主机 -P 代理端口 -> 设置 JMeter 使用的代理主机的端口号 如果想要告诉路径 直接填写绝对路径 把non-gui压好的jtl文件可以cat直接查看也可以在JMeter GUI 界面 -> 测试计划 -> 添加线程组 -> 添加聚合报告 -> 点击"所有数据写入一个文件"下的 "浏览..." #csv参数化文件目前本人尝试只能用修改vi xxx.jmx文件参数 http://www.lxway.com/662044862.htm
jmeter在linux下分布式测试
1.测试环境(默认控制机为windows,负载机用了虚拟机来实现)
Java-jdk配置环境变量在windows/linux
在windows/linux下环境变量配置jmeter
配置linux统一在vi /etc/profile中配置
配置完运行环境变量 source /etc/profile
主控机windows下配置jmeter.properties
改为

主控机也就是windows上的jmeter配置ip是本机ip和负载机ip
保证两环境配置一致
Jmeter4.0版本要验证ssl ,可以关掉或者拿到秘钥
Windows/linux下修改jmeter.properties
server.rmi.ssl.disable=true
方法2

负载机linux下直接启动命令,ip地址为linux下自己的ip地址
./jmeter-server -Djava.rmi.server.hostname=xxx.xxx.xxx.xxx
或者在jmeter-server编辑后直接./jmeter-server
出现下方说明启动正常


之后选择项目启动


Linux下显示成功
linux为控制机 windows为负载机(有参数化文件)
首先xxx.jmx文件在linux环境目录下,参数化文件在windows下的/bin目录下
vi xxx.jmx 参数化路径调整为./csv.txt 或者 ./csv/csv.txt
打开windows下启动jmeter-server.bat
在linux下bin目录下jmeter -n -t xxx.jmx -R 192.168.x.x -l xxx.jtl
之后看到这边有显示就说明可以了
2.windows为控制机,linux为负载机(有参数化文件)
首先xxx.jmx文件在windows环境目录下,参数化文件在linux下的/bin目录下
在windows上jmeter中csv参数设置路径为xxx.jmx(前提条件是csv.txt在linux中bin路径下) 如果是csv/csv.txt 不知道怎么办
./jmeter-server运行
运行通过不一定成功,要在真实环境下看看数据库或者页面信息是否有增加
3.多台linux之间做分布式
一台主控机,一台或多台负载机
一样,第一步先查看各机jmeter,jdk(版本一致,配置环境,root权限)
所有负载机启动jmeter-server,主控机修改jmeter.properies添加remote_hosts加上各自的负载机ip之间用逗号间隔
jmeter -n -t test.jmx -R ip1,ip2,ip3 -l testReport.jtl
其中遇到的问题:
1防火墙
2jdk版本
3尽量把localhost变成固定ip地址
附:Jmeter命令行选项:
JMeter在windows系统下启动的是一个Swing GUI界面,也可以在Linux/Unix系统中作为一个命令使用。调用JMeter的 “jmeter -?”命令将打印所有命令选项的一个列表
-h打印使用信息并退出
-v, --version 打印版本信息并推出
-p, --propfile {argument} 使用的JMeter属性文件
-q, --addprop {argument} 附加的属性文件
-t, --testfile {argument} 运行的jmeter测试文件(.jmx)
-l, --logfile {argument} 日志取样文件
-n, --nongui 非用户界面运行JMeter
-s, --server 运行JMeter服务器
-H, --proxyHost {argument} 设置JMeter使用的代理服务器
-P, --proxyPort {argument} 设置JMeter使用的代理服务器端口
-u, --username {argument} 设置JMeter使用的代理服务器用户名
-a, --password {argument} 设置JMeter使用的代理服务器密码
-J, --jmeterproperty {argument}={value} 定义附加的jmeter属性
-D, --systemproperty {argument}={value} 定义附加的System属性
-S, --systemPropertyFile {filename} 一个属性文件被做为系统属性添加
-L, --loglevel {argument}={value} 定义日志等级: [category=]level 例如jorphan=INFO or jmeter.util=DEBUG
-r, --runremote 从非用户界面模式启动远程服务器
-d, --homedir {argument} 使用的JMeter目录
-j,--jmeterlogfile {argument} the jmeter log file
-G,--globalproperty (argument)[=value] 定义一个JMeter属性并发往所有远程服务器。如:-Gport=123、-Gglobal.properties
-R,--remotestart serverl,... (non-GUI only) 在指定远程服务器上运行
-X,--remoteexit Exit the remote servers at end of test (non-GUI)
参考网站https://www.cnblogs.com/lamon/p/8604022.html

浙公网安备 33010602011771号