前言
我们在性能测试之前除了准备测试脚本、测试数据、测试场景等我们还需要准备的是性能测试的环境。环境的准备关系到你的性能测试得到的数据是否准确与真实。如果环境准备不好的话那么你得到的数据是不符合要求的,会影响到你测试之后的结果分析。所以准备性能测试环境是一个比较重要的步骤,但是值得确定的是只要准备一次可多次重复使用。环境包含往大的说可分为软件环境与硬件环境
软件环境:系统、tomcat、nginx、redis、mysql、httpd等
硬件环境:CPU、内存、带宽、磁盘等
当然以上列出的是一个基本环境。为了测试一般来说我们需要一个负载环境(一般的小公司而言很有可能就是你电脑的主机了)。一些比较正规并且待遇比较好一点的都会给测试一台甚至好几台负载机器,用来对需要测试的软件进行测试。并且这台测试机器与所测机器在的环境应该是同一网段,内网互通。当然也可能不是。不过我们建议一般是具有内网,并且外网带宽也具备比较高的水平。这样才不会影响我们测试。
那么为什么要学会怎么部署一台负载机呢,主要是我们的master主机资源也是有限的,当我们需要发起成千上万的并发的时候一台电脑是明显不够。如果一台电脑发起这么多的压力的话先不说你测试的系统怎么样,你自己的电脑就先罢工了。所以一般我们不建议这么做。一般压力会均匀的分配给我们的负载机器,master只要负责手机信息就够了。
1、准备需要的材料:
与master相同版本的jmeter二进制包(保持插件版本一致)、与master相同版本的JDK二进制包(保持插件版本一致)
2、安装JAVA环境
(1)将JDK二进制包上传到服务器
登录服务器主机,使用rz命令将二进制包上传到/usr/local目录下(为什么要上传到这个目录的原因是,一个一般运维统一的习惯。因为将一些软件统一放到一个目录下比较好管理。等你离职的时候如果有遗漏别人可以很快的找到你所安装的软件,并对他进行维护),如果觉得rz命令比较慢的话可以选择在自己本机执行scp 命令会比较快一些(个人经验)。
(2)解压JDK
上传上去后再使用tar命令将压缩包解压tar -zcvf jdk-8u201-linux-x64.tar.gz
(3)配置JAVA_HOME
使用vi或者vim修改配置文件/etc/profile,或者修改用户目录下的隐藏文件 .bash文件,还有就是直接在jmeter执行文件中修改执行文件也是可行的,但是作为一个测试负载机器还是配置/etc/profile比较合适
添加JAVA_HOME
export JAVA_HOME=/usr/local/jdk1.8.0_201
export PATH=$JAVA_HOME/bin:$PATH
(4)让JAVA_HOME生效
执行
source /etc/profile
(5)检查java配置是否生效 java -version
3、配置JMETER_HOME(可以省略,但是配上比较好)
(1)上传jmeter的二进制包
(2)解压压缩包
tar -zxvf jmeter.tar.gz
(3)配置JMETER_HOME
(4)让JMETER_HOME在配置中生效
source /etc/profile
(5)检查是否生效 jmeter --version
4、修改jmeter配置文件 $JMETER_HOME/bin/jmeter.properties
server.rmi.ssl.disable=true
server.rmi.create=true
server.rmi.port=1099
server.rmi.localport=1099
5、修改$JMETER_HOME/bin/jmeter-server
获取负载机ip的方式ifconfig命令
RMI_HOST_DEF=-Djava.rmi.server.hostname=192.168.5.113
6、启动负载机器上的jmeter-server
7、修改master主机的$JMETER_HOME/bin/jmeter.properties 添加负载机IP
remote_hosts=192.168.5.134,192.168.5.113
注意:多台负载机器用逗号隔开,老版本需要写上默认端口好1099。新版本直接写IP就好了
8、启动master并使用负载机器执行脚本
经常会遇到的问题
1、master与负载机连接超时
检查网络是否通畅 使用ping xxx.xxx.xxx.xx
检查负载机器的防火墙 service iptables status / service iptables stop
检查是否有多个卡在使用,加入master或者负载机器有多个网卡的话同样会导致连接超时,所以尽量使用一个网卡
检查配置是否都按照要求配置。
2、运行脚本的时候会缺少数据。
我们在运行压力脚本的时候虽然我们的脚本jmeter会帮我们传输给负载机器但是数据不会同步。jmeter只会将jmx接哦本传给负载机器,但是和jmx关联的csv等数据是没办法一同传输的,所以需要我们自己将文件上传到负载机器。我们建议上传到$JMETER_HOME/bin 或者机器能直接找到的目录
3、查看结果树是看不到负载机器请求接口的返回值的。只能自己写断言啦
有问题欢迎咨询,当然如果写的不好请多指教