参考文章:https://www.cnblogs.com/Byronlyu/p/6950280.html
一、背景:
二、jmeter分布式原理
这个远程启动,网上说的高大上一点,就是jmeter的分布式控制~ 具体控制如下图:
2.客户端机器作为一个控制器controller,控制多台slave机器的操作。
3.controller通过GUI界面启动slave机器,将jmeter压测发送给每台启动的slave,slave获得脚本后开始执行。slave本地不需预先存储脚本;
4.各台slave执行完成后,将结果传回给controller,controller收集整合显示。
三、jmeter远程启动配置
服务器(slave)配置
在slave的%JMETER_HOME%bin目录下执行./jmeter-server命令启动jmeter服务就可以,启动成功如下图:
3.注意:上图红框中的ip为服务器的ip地址,当服务器有多网卡时它会随机挑选一个网卡使用,红框中的端口号port为启动jmeter服务监听的port,一般会有个默认端口号1099,但最好自定义,确保端口号不冲突。修改方法在下文介绍。
客户端(controller)配置
在客户端上要保证执行命令能发送到服务器,因此需配置客户端远程的ip地址和port。在客户端安装目录的bin文件夹下,找到jmeter.properties,修改配置如下图,其中ip和port即为上一步slave的ip和port,如上图中jmeter-server启动时红框中显示的内容。多个slave机器的配置可通过逗号分隔。
remote_hosts=10.165.124.6:1029
配置完成后打开客户端jmeter的GUI界面,在运行-远程启动中即可看到自己配置的slave机器。
3.添加一个脚本,点击远程启动即可启动运行slave机器,此时在服务器上可看到控制台信息,在客户端通过监听器-聚合报告或察看结果数可看到执行结果。
四、问题
slave机器的自定义端口号配置
在slave机器的%JMETER_HOME%bin目录下找到jmeter.properties,修改如下两项配置,即可自定义端口号:
server_port=1029
server.rmi.localport=1029
修改后执行服务端的jmeter-server即可看到控制台消息中修改是否生效;修改生效后需在客户端修改相应的jmeter.properties下的remote_hosts。
slave机器和客服端多网卡的问题
可通过如下配置指定服务器和客户端的网卡,在服务器端的jmeter-server文件中,修改配置指定服务器端的网卡ip
RMI_HOST_DEF=-Djava.rmi.server.hostname=10.165.124.6
在客户端的jmeter.bat中修改配置指定客户端的网卡ip
增加配置项:set rmi_host=-Djava.rmi.server.hostname=10.165.120.4
修改配置项:set ARGS=%DUMP% %HEAP% %NEW% %SURVIVOR% %TENURING% %PERM% %CLASS_UNLOAD% %DDRAW% %rmi_host%
在修改配置后尝试远程启动,发现还是不成功,打开客户端jmeter.log,发现客户端发送成功;打开服务器端的jmeter-server.log显示服务器连接客户端不成功,尝试ping了一下也确实ping不通,然后网上搜了一下说是因为客户端的防火墙阻止了,关闭客户端所有防火墙,再次执行,测试成功。
依赖文件报错的问题
附1:
Linux安装JDK:
登录网址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
选择对应jdk版本下载。(可在Windows下下载完成后,通过文件夹共享到Linux上)
1. 登录Linux,切换到root用户
su root 获取root用户权限,当前工作目录不变(需要root密码)
或
sudo -i 不需要root密码直接切换成root(需要当前用户密码)
2. 在usr目录下建立java安装目录
cd /usr
mkdir java
3.将jdk-8u60-linux-x64.tar.gz拷贝到java目录下
cp /mnt/hgfs/linux/jdk-8u60-linux-x64.tar.gz /usr/java/
4.解压jdk到当前目录
tar -zxvf jdk-8u60-linux-x64.tar.gz
得到文件夹 jdk1.8.0_60
5.安装完毕为他建立一个链接以节省目录长度
(我没用这一步)
ln -s /usr/java/jdk1.8.0_60/ /usr/jdk
6.编辑配置文件,配置环境变量
vim /etc/profile
添加如下内容:JAVA_HOME根据实际目录来
JAVA_HOME=/usr/java/jdk1.8.0_60
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
7.重启机器或执行命令 :source /etc/profile
sudo shutdown -r now
8.查看安装情况
java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) Client VM (build 25.60-b23, mixed mode)
可能出现的错误信息:
bash: ./java: cannot execute binary file
出现这个错误的原因可能是在32位的操作系统上安装了64位的jdk,
查看jdk版本和Linux版本位数是否一致。
查看你安装的Ubuntu是32位还是64位系统:
sudo uname --m
i686 //表示是32位
x86_64 // 表示是64位
附2:
Linux安装jmeter:
1.上传jmeter 的压缩包到Linux
解压文件
unzip apache-jmeter-3.0,zip
移动文件
mv apache-jmeter-3.0 /data
配置设置
vi /etc/profile
添加
export JMETER_HOME=/data /apache-jmeter-3.0.
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:$HOME/bin
参考
http://www.cnblogs.com/fengpingfan/p/6028884.html
重新执行刚修改文档
source /etc/profile
修改成功输入
jmeter -–version
更改权限
chmod a+x /data/apache-jmeter-3.0/bin/jmeter
问题2:
报错:Cannot start. Unable to get local host IP address. is a loopback address
在Windows下启动Jmeter非常顺利,转到Linux下居然启动失败。根据抛出的异常的信息来看,这个跟ip有关。
不出意料,果然是这个问题。 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
根据异常的大意可知,应该是hostname与localhost不一致导致的,所以,使用hostname命令查看用户名,果然是不一致的我linux机器的hostname为v3因此将上述改为下面的就可以了。127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
10.2.250.203 v3.rdev.tal.net v3
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
注意:10.2.250.203 v3.rdev.tal.net v3为你的IP地址(10.2.250.203)加你的hostname(v3.rdev.tal.net)
由/etc/hosts文件导致启动失败的错误有:
1,
Created remote object: UnicastServerRef [liveRef: [endpoint:[10.20.10.31:38796](local),objID:[-b0d822e:12794fee8b1:-7fff, 8314597152635832475]]]
Server failed to start: java.rmi.RemoteException: Cannot start. Unable to get local host IP address.
2,
Created remote object: UnicastServerRef [liveRef: [endpoint:[10.20.10.31:38796](local),objID:[-b0d822e:12794fee8b1:-7fff, 8314597152635832475]]]
Server failed to start: java.rmi.RemoteException: Cannot start. Unable to get local host IP address.
附3:
Windows下配置jmeter环境变量:
1、设定目录为 D:\apache-jmeter-3.2\
2、新增1个系统变量名JMETER_HOME、变量值输入 D:\apache-jmeter-3.2\
3、新增1个系统变量名CLASSPATH、变量值输入%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar; %JMETER_HOME%\lib\jorphan.jar;
4、在变量path后面加上%JMETER_HOME%\bin
5、配置完成后输入: jmeter和jmeter –v测试一下是否配置正确!
ps:配置环境变量后可以使用相对路径引用参数文件,如:..\datas\CommissionDatas_onlyoneuser.csv
ps:csv文件编码更改:1、首先,将.csv文件保存一下。然后鼠标右击打开方式记事本。2、然后,以记事本的方式打开了。文件-另存为 这时弹出一个窗口,右下方,编码,这时候你就可以选择自己想要的编码格式,然后保存,就是这么简单