多台VPS进行JMeter分布式压力测试

Table of Contents

最近想研究下Jmeter的分布式测试,于是在Linode云主机上折腾了下,此厂商的主机可以自选硬件配置,收费按照小时计算,所以操作的时候可要手快啊。

 

一、环境信息

1  被测服务器

日本VPS主机

1152GB硬盘

16核心CPU

内存65536MB

IP地址:peloo.net

2  jmeter主控制机

美国VPS主机

内存2048MB

单核心CPU

30GB硬盘

IP地址:173.255.243.59

3  jmeter从机

配置同主控制机,位置同在美国,属于同一个机房

IP地址:173.255.220.37  173.255.223.112

 

 

二、环境配置

1  被测服务器

被测服务器上搭建了WordPress网站,架构为Nginx+PHP+MySQL

2  jmeter主控制机配置

(1)  下载官网jmeter tgz文件到tmp目录并解压

wget -c -P /tmp http://mirrors.cnnic.cn/apache//jmeter/binaries/apache-jmeter-3.1.tgz

cd /tmp

tar zxvf apache-jmeter-3.1.tgz

(2)  复制解压目录到/usr/local

cp -rv /tmp/apache-jmeter-3.1 /usr/local

ln -sv /usr/local/apache-jmeter-3.1 /usr/local/jmeter

(3)  添加jmeter环境变量    vi /etc/profile

增加:

JMETER=/usr/local/jmeter/apache-jmeter-3.1

CLASSPATH=$CLASSPATH:$JMETER/lib/ext/ApacheJMeter_core.jar:$JMETER/lib/jorphan.jar:$JMETER/lib/logkit-2.0.jar

PATH=$PATH:$JMETER/bin

(4)  source /etc/profile

(5)  Jmeter -v查看是否设置成功

(6)  在jmeter目录创建testplan testresult子目录

(7)  关闭防火墙

service iptables stop

(8)  rz上传jmx脚本到testplan下

9)  若有host进入/etc/hosts 加入自己的host配置

hosts文件的作用相当如DNS,提供IP地址到hostname的对应,Linux系统在向DNS服务器发出域名解析请求之前会查询/etc/hosts文件,如果里面有相应的记录,就会使用hosts里面的记录

//查看当前host hostname (实际与执行脚本使用的host无关,该命令返回的host是系统启动时就一直不变的,若要修改,需要修改以后重启服务器才会永久生效)

vim /etc/sysconfig/network  系统网络配置文件   --需要重启生效,永久性修改。hostname是Linux系统下的一个内核参数,它保存在/proc/sys/kernel/hostname下,但是它的值是Linux启动时从rc.sysinit读取的。而/etc/rc.d/rc.sysinit中HOSTNAME的取值来自与/etc/sysconfig/network下的HOSTNAME

/etc/init.d/network restart  修改网络配置文件后重启网络

(10) 执行脚本并生成聚合报告(在jmeter目录下能够看到jmeter.log或者在testplan目录下,自行寻找,通过日志可以看到出错的地方)

jmeter -n -t testplan/comic.jmx -l testResult/result1.jtl

-n  表示以nogui方式运行测试计划

-t  表示测试计划,后面跟测试计划名称

-l  表示测试结果,后面跟测试结果文件名称

(11) sz导出聚合报告,在windows下打开可查看结果

3  Jmeter从机配置

VPS厂商管理后台克隆两台jmeter主控机即可,且关闭iptables防火墙

service iptables stop

三、分布式测试

1  在控制机上修改bin/jmeter.properties,添加从机的IP及端口(使用-r启动所有从机)1099是默认的rmi通信端口

# Remote Hosts - comma delimited

remote_hosts=173.255.220.37:1099,173.255.223.112:1099

2  开启执行脚本机器上的server服务,/usr/local/jmeter/bin/jmeter-server &

3  在控制机执行分布式命令,两个都可

jmeter -n -t testplan/comic.jmx -R 10.15.243.53,10.15.230.78 -l testResult/result1.jtl    指定从机IP

jmeter -n -t testplan/comic.jmx -r -l testResult/result1.jtl  启动所有从机执行脚本

主控机测试结果展示:

 

jmeter-controll-distribution-test

实际上,分布式Jmeter测试的从机不是越多越好,因为从机越多,和控制机的数据交互就越频繁,网络带宽可能成为瓶颈,测试不准确。

如果想实现大数量级的并发,可以在Jmeter源码上进行改造。