linux部署分布式jmeter压测环境
- 为什么要在linux上上做压测,而不是在GUI界面?
因为GUI界面本身会消耗服务器资源,其次GUI运行的结果一般是保存在jmeter运行内存中,导致在做长时间压测得时候,内存占用会越来越高,最终可能导致工具报错或者宕机风险,影响测试。
压测使用机器最好和服务部署的机器在同一网络下,减少网络原因导致的性能问题,这样从服务部署机器镜像一台机器就可以作为负载机使用,更加方便。。
- 部署方式
1.安装JDK
网上一大堆,不在赘述
2.部署jmeter
(1)在官网http://jmeter.apache.org/download_jmeter.cgi 下载所需要的jmeter版本,我这里下载的是5.1的版本apache-jmeter-5.1.1.zip
(2)上传到linux机器,并解压缩unzip apache-jmeter-5.1.1.zip ,生成apache-jmeter-5.1.1目录
(3)环境变量配置:
注意路径改为自己上传的路径:
export JMETER_HOME=/opt/apache-jmeter-5.1.1
export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH
export PATH=$JMETER_HOME/bin:$PATH
(4)环境变量立即生效
source /etc/profile
(5)查看安装结果
jmeter -v
3.分布式部署
我这里是按照三台机器规模部署的,提前在三套机器上分别部署jmeter环境(三台机器上jmeter版本最好一致)
(1)master节点配置
master节点可以使用windows也可以使用linux,因为master在工作过程中不直接参与压测,而是起到一个脚本调度,控制slave发起压测的作用,因此本身消耗不大,我这里使用的是linux作为master
修改jmeter配置文件jmeter.properties 中remote_host为两个slave节点的IP和端口
remote_hosts=10.8.1.143:1099,10.8.1.144:1099
(2)slave节点配置
修改jmeter配置文件/bin/jmeter.properties ,找到并取消这段配置的注释 server.rmi.ssl.disable=false ,false改成true。
启动slave节点
jmeter-server -Djava.rmi.server.hostname=10.8.11.143 ,启动 anget 节点。jmeter-server 后面的参数指定 agent 的 IP
启动成功之后ps -ef |grep jmeter能够看到jmeter进程
4.启动压测
(1)启动slave节点
nohup ./jmeter-server -Djava.rmi.server.hostname=10.8.1.143
(2)上传所需的jmx脚本和参数化数据到指定路径
(3)启动压测
./jmeter -n -t /home/cloud-user/msg_test.jmx -R 10.8.11.143,10.8.11.144 -l ../result/testReport.jtl -e -o ../report/resultReport
命令说明:
-t 制定需要执行的jmx脚本全路径
-R 配置两个slave节点的ip地址(和slave节点配置文件jmeter.properties中remote_host配置一样),中间用逗号隔开
-l 输出测试结果(jtl格式)
-e 输出图表结果
-o 报告输出的路径
(4)导出报告