linux上实现jmeter分布式压力测试的完整教程

linux上实现jmeter分布式压⼒测试的完整教程
最近根据公司⼯作的需求,学习了⼀些压⼒测试的知识,⽬前,公司使⽤的是jmeter进⾏压⼒测试。下⾯就记录下近期的学习。
我想将这次的博⽂分成三个部分:
1、开始测试前的准备(测试环境的搭建)
2、在⼀台linux上测试
3、多台linux分布式测试
⾸先来看看测试环境的搭建。我是⾃⼰创建的linux虚拟机,所以就⽤它来说说吧。
安装linux的过程就不多说了,不是本次的重点,有不太明⽩的朋友,可以⾃⼰去百度下,或者我有⼀篇⽂章也⼤概记录了我的安装过程,可以参考下。
linux安装好之后,我们需要安装jdk,因为jmeter是依赖于jdk运⾏的。由于我们的测试case都是在windows上利⽤jmeter写好之后上传到linux上跑的,所以,为了避免不必要的错误,windows和linux的jdk和jmeter版本要保持⼀致。
JDK的安装
到⾃⼰想要的版本,在linux的/usr/下新建⼀个⽂件夹,名字⾃⼰取,⽤来放jdk安装包和安装jdk使⽤(我使⽤的是/usr/java/)。然后将安装包放到linux的/usr/java/下,然后执⾏下⾯命令进⾏jdk的安装:
卡片式u盘>激光内雕tar -zxf <jdk name>
jdk name 就是你要安装的jdk安装包,⾄此,jdk安装就完成了。为了节省空间,我们要把安装包删掉,执⾏下⾯的命令:
rm -f <jdk name>
-f 指明了不需要询问我,直接删掉。
接下来,我们需要配置系统变量,就像windows操作系统中配置环境变量⼀样,这⾥我们通过编辑profile⽂件来配置:
vi /etc/profile
然后按下Ins键,当下⾯出现INSERT时,我们就可以进⾏编辑了。
在⽂件的后⾯追加下⾯⼏⾏内容:
JAVA_HOME=/usr/java/jdk1.8.0_121
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/tools.jar
export JAVA_HOME PATH CLASSPATH
内容中的路径和jdk版本都要换成⾃⼰的,这个是笔者的路径。
添加完之后,按下Esc键,退出编辑模式,然后输⼊:wq 再按下回车键,这样就将修改的内容保存并退出,为了让修改的⽂件⽣效,需要执⾏下⾯的命令:
source /etc/profile
为了验证jdk是否成功安装,我们执⾏下⾯的命令,如果出现对应的安装版本信息,则说明安装成功,否则请检查安装和配置。
[root@localhost java]# java -version
加固显示器
java version "1.8.0_121"
Jmeter的安装
jdk安装完成,就开始jmeter的安装了。安装过程很简单,跟jdk类似,现在/etc/下创建jmeter⽂件夹,将安装包放到/usr/jmeter/下,执⾏下⾯命令:
tar -zxf <jmeter package>自行车儿童座椅
安装好以后,去配置环境变量。依然是修改/etc/profile的内容。添加以下⼏⾏:
JMETER_HOME=/usr/jmeter/apache-jmeter-3.0
CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$JMETER_HOME/lib/logkit-2.0.jar:$CLASSPATH
PATH=$JMETER_HOME/bin/:$PATH
export JMETER_HOME CLASSPATH PATH
⼀定要注意,路径要换成⾃⼰的哦。⾄此,jmeter也已经安装完毕啦,我们可以执⾏以下命令要验证,
隐私保护通话jmeter是否安装成功。
jmeter -v
如果正确的安装,就会出现jmeter的版本相关信息。
执⾏⼀条jmeter测试
相信到这⾥的朋友,测试环境已经搭建好了。那么接下来呢,我们就可以开始执⾏第⼀条测试了。
⾸先,创建⼀个⽂件夹来放测试case,因为我是⽤虚拟机跟本地windows机器创建了⼀个共享⽂件夹,所以为了⽅便,我就直接放在该⽂件夹下了。(/mnt/hgfs/share/jmeterTest)
然后可以运⾏下⾯的命令:
jmeter -n -t test.jmx -l testReport.jtl
jmeter前⾯我们已经安装,jmeter在安装路径的bin⽬录下。
-n 表⽰没有界⾯的运⾏
-t 后⾯紧跟指定的需要运⾏的测试case(测试case在windows上⽤jmeter图形界⾯事先写好)
-l 指定了测试报告的⽂件(也可以指定路径,默认在当前⽬录下),⽣成的报告可以保存到本地windows上在jmeter中打开查看。
需要注意的是:我们的操作是在root⾝份下进⾏的,如果你登陆的是其他⾝份的⽤户,可能jmeter不具有x(可执⾏)权限,我们需要先给它权限。
⾄此,在linux上通过命令⾏执⾏jmeter测试已经成功完成了。但是,对于⼀个有点⼉追求的测试狗来说,这肯定是远远不够的。下⾯我们就来说下,如何在多台linux上分布式执⾏jmeter测试。
多台linux分布式测试
先来理解下分布式测试原理,看下图:
1、Jmeter分布式测试时,选择其中⼀台作为调度机(master/Controller),其它机器做为执⾏机(slave/Agent)。
2、执⾏时,master会把脚本发送到每台slave上,slave 拿到脚本后就开始执⾏,slave执⾏时不需要启动GUI,应该是通过命令⾏模式执⾏的。
3、执⾏完成后,slave会把结果回传给master,master会收集所有slave的信息并汇总。
注意:
(1)每⼀台jmeter远程服务器(slave机器)都执⾏相同的测试计划,jmeter不会在执⾏期间做负载均衡,每⼀台服务器都会完整地运⾏测试计划;
隔声工程(2)采⽤JMeter远程模式并不会⽐独⽴运⾏相同数⽬的⾮GUI 测试更耗费资源。但是,如果使⽤⼤量的JMeter 远程服务器,可能会导致客户端过载,或者⽹络连接发⽣拥塞;
(3)默认情况下,master机器是不执⾏参与⽣成并发数据的;
(4)调度机(master)和执⾏机(slave)最好分开,由于master需要发送信息给slave并且会接收slave回传回来的测试数据,所以mater⾃⾝会有消耗,所以建议单独⽤⼀台机器作为mater。
下⾯开始实施吧。
⾸先,按照前⾯安装jmeter的步骤,在其他linux上安装jdk和jmeter(jdk和jmeter的版本以及安装路径要保持⼀致,不然可能会出错,⽆法成功执⾏)
确保环境搭建完成以后,进⼊jmeter的安装⽬录,进⼊bin下,启动jmeter-server(如果没有可执⾏权限,要先添加权限,root⽤户没有权限限制)
所有的slave机器都要启动jmeter-server,默认端⼝是1099,可以通过修改jmeter.properties⽂件进⾏修改。回到master机器上,修改jmeter.properties⽂件中的remote_hosts,将slave机器的ip地址添加上去,多个ip之间⽤逗号隔开。其中127.0.0.1表⽰master机器本⾝,为了独⽴开master,可以将其去掉,这样就不会在master上执⾏测试。
然后在master机器上执⾏下⾯的命令:
jmeter -n -t test.jmx -R ip1,ip2,ip3 -l testReport.jtl
其中 -R 指定远程连接的slave机器的ip地址,多个ip之间⽤逗号隔开。
⾄此,分布式jmeter测试也完成了。但是,对,我⼜要说但是了。很有可能你不会执⾏成功(因为我就没有那么容易的成功啊!哈哈哈)
那么问题来了
下⾯我列举出⼀些我在这个过程中出现的⼀些错误,以及后来的解决办法。
问题1:
在slava机器上执⾏jmeter-server的时候,会出现以下的问题:(以下为本⼈遇到的问题)
1、出现 XII DISPLAY 这样的错误,可以先执⾏下⾯命令:
echo $DISPLAY
如果内容为空(我就是内容为空),那么,就继续执⾏下⾯的命令:
DISPLAY=:0
#DISPLAY=localhost:0.0
上⾯两个都可以
问题2:
jmeter-server启动失败。通常有以下两个错误:
1、Unable to get local host IP address
2、xxx is a loopback address
⼀般上⾯的两个问题,都是由host⽂件引起的,我们需要修改host⽂件,可以执⾏下⾯的命令:
vi /etc/hosts
我是将127.0.0.1替换成本机ip地址的。
针对“xxx is a loopback address”这个问题,我们还可以通过执⾏下⾯的命令来指定ip,从⽽避免掉该错误:
./jmeter-server -i.server.hostname=ip
问题3:
jmeter-server启动成功,但是在master上⽆法执⾏分布式测试。
我这边抛出的错误是:”No route to host“
这个问题是由防⽕墙引起的,也就是说,slave上的防⽕墙没有关闭,此时,我们需要到slave上关掉防⽕墙。之后就可以正常运⾏了。关闭防⽕墙的⽅法多种,我这⾥特别记录下我⾃⼰红帽⼦7虚拟机的命令:
#查看防⽕墙状态
systemctl status firewalld
#关闭防⽕墙
systemctl stop firewalld
好了,整个过程就是这样的额。
偷偷告诉你们⼀个事情,因为我是个“懒癌患者”,所以上⾯这些执⾏测试的操作,都不要重复去做,于是我就想⽅法将他们写到了⼀个shell⽂件中,下次再跟⼤家⼀起分享下这个⼩脚本,希望⼤神给我指点
谢谢⼤家看完本博。喜欢就点个赞吧,转载请注明出处!

本文发布于:2024-09-23 07:17:13,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/224260.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:安装   测试   需要   机器   分布式   件夹   出现
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议