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

 

posted @ 2019-09-03 10:01  RainBol  阅读(270)  评论(0)    收藏  举报
Live2D