JMeter集群模式的应用
JMeter对于许多Java程序员是曾经和现在的最得心应手的压测工具,而且JMeter本身也是使用Java开发的。截止本文写作时间,官方网站上最新的版本是5.1.1,需要在Java 8的环境下运行。5.1.1版本的界面采用了类似Idea的黑色风格,一眼看上去还是很不错滴,但是第二眼再看,文字和图标怎么就那么小呢,而且只能通过Zoom In和Zoom Out放大和缩小,放大(Zoom In)后的效果文字都挤压在了一起,看起来非常别扭。界面也许永远都会是Java的硬伤了。
JMeter最直接的使用方法是在本地以图形或命令行的方法运行,这种方法使用方便,操作简单。缺点是一台计算机的运算能力有限,可以模拟的并发数有限。这时就需要使用第二种方式运行了,在多台或许多台计算机上启动JMeter server服务,让它们同时协作工作,以发起n倍的并发模拟访问量。
下图是JMeter集群模式的部署图,JMeter agent是部署在linux主机上的服务,是实际发起模拟请求的。JMeter controller控制JMeter agent的运行,是总控制器。
图1
安装JMeter
下面开始安装和配置。Agent和Controller的安装过程相同。
JMeter下载地址:http://jmeter.apache.org/download_jmeter.cgi
下载页面提供了Binaries和Source(二进制和源代码)两种形式,可以下载Binaries的包,格式是.tgz或.zip都可以。本文以.tgz为例。
解压
tar -xvzf apache-jmeter-5.1.1.tgz
移动到一个位置
mv apache-jmeter-5.1.1 /data
修改/etc/profile
export JMETER_HOME=/data/apache-jmeter-5.1.1
export PATH=$PATH:${JMETER_HOME}/bin
配置Agent
vi /data/apache-jmeter-5.1.1/bin/jmeter.properties
server_port=1099
server.rmi.localport=1099
server.rmi.ssl.disable=true
server_port和server.rmi.localport设置成相同的端口号,controller操纵agent时需要使用此端口。
运行agent
jmeter-server
配置Controller
vi /data/apache-jmeter-5.1.1/bin/jmeter.properties
remote_hosts=192.168.3.243:9800, 192.168.3.244:9800
remote_host指定agent服务的地址,多个地址使用逗号(,)分隔。
创建jmx文件
linux上是命令行方式运行jmeter的,没有了图形界面,怎么创建测试策略呢?可以通过在windows上以图形化方式运行jmeter,创建好测试策略后,保存成jmx文件。然后,将jmx文件上传至linux上运行controller的服务器上,就能启动命令了。
图一
如图一所示,在图形jmeter中,创建Thread Group, HTTP Request, Aggregate Graph等测试组件,点击保存。
图二
如图二所示,将配置保存成jmx文件。.jmx是xml格式的文本文件,里面包含了测试相关的各种配置。
启动jmeter集群测试
在controller主机上使用jmeter启动测试。
jmeter -n -t meta-data.jmx -r -l log.jtl
meta-data.jmx是在windows上创建的jmeter配置文件。
图三
controller会将配置传送给每一个agent,并启动agent。等所有agent测试任务结束后,会在controller上执行命令的目录下会生成log.jtl
如何查看测试报告
把controller上生成的log.jtl下载到本地windows上,使用jmeter的聚合报告工具就可以查看了。