马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
媒介
Jmeter分布式测试时须要的特殊留意
1)参数化文件的位置和内容
假如利用csv文件举行参数化,即通过读取csv文件中的数据来为测试脚本提供差别的输入值,那么须要留意以下两点:
须要把参数文件在每台slave上拷贝一份,最好都放置在bin目次下,由于Jmeter会直接从bin目次下查找;
参数文件的内容要保持同等,即每台slave上的参数文件的行数、列数、数据范例等都要类似,否则大概会导致数据不匹配或缺失。
2)slave呆板的相应数据
slave呆板实行脚本时,若断言实行乐成,则在master呆板上是看不到哀求相应数据的,只有在断言堕落时才可见slave的返回。
这是为了节省网络带宽和进步测试服从,由于在分布式测试中,通常只关心测试结果的统计和分析,而不须要查察每个哀求的详细数据。
假如须要查察slave的相应数据,可以在slave呆板上打开jmeter.log文件,大概在master呆板上设置Jmeter属性mode=Standard,但如许会增长网络开销和测试时间。
3)TCP取样器的设置
若要利用Jmeter分布式举行TCP协议的测试,须要留意以下两点:
TCP取样器中“TCPClient classname”该栏必须填写对应的协议。
比方:
假如要发送二进制数据,就要填写org.apache.jmeter.protocol.tcp.sampler.BinaryTCPClientImpl。
假如要发送文本数据,就要填写org.apache.jmeter.protocol.tcp.sampler.TCPClientImpl。
否则大概会出现数据格式错误或无法发送的题目;
以十六进制发送tcp数据包时,TCP取样器中“End of line(EOL) byte value”必须填写数据包的竣事符,比方,假如数据包以0D 0A末端,就要填写13,否则jmeter会不停等候,无相应。
4)Linux下设置jmeter情况变量
假如在Linux体系下利用Jmeter,须要设置jmeter情况变量,以便于在下令行中直接启动jmeter。
详细步调如下:
编辑/etc/profile文件,添加如下变量:
- export JMETER_HOME=/usr/local/jmeter-5.0
- export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH
- export PATH=$JMETER_HOME/bin:$PATH
复制代码 使设置文件立即见效,实行下令:
查察是否安装乐成,实行下令:
Jmeter分布式测试的常见题目办理方法
题目1:在master上运行jmeter-server.bat时,出现“Exception creating connection to:192.16…;nested exception is:java.io.FileNotFoundException:rmi_keystore.jks(体系找不到指定的文件)”错误
缘故原由:Jmeter4.0以上的版本,默认启用RMI毗连的安全通讯,须要创建密钥库。以是假如没有创建密钥库,就会出现这个错误。
办理方法:
方法1:修改apache-jmeter/bin/jmeter.properties 参数:server.rmi.ssl.disable=true
备注:将master和slave呆板上的jmeter.properties文件 参数server.rmi.ssl.disable均改为true
此中linux上是用以下下令:vi jmeter.properties 利用/server.rmi.ssl.disable/举行查找
方法2:手动天生秘钥和证书。实行create-rmi-keystore.bat(Windows实用)或create-rmi-keystore.sh(Linux实用)
天生server.rmi.ssl.keystore.file的key文件,然后将key文件复制到全部的负载机的bin目次下
修改jmeter.properties中
题目2:在slave上(linux体系)运行jmeter-server时,出现“An error occurred: Cannot start. localhost is a loopback address”错误
缘故原由:Jmeter默认利用localhost作为RMI的主机名,但是localhost是一个回环地点,不能用于长途毗连。
办理方法:
方法1:运行以下下令:./jmeter-server -Djava.rmi.server.hostname=192.16…(本机ip)
方法2:修改jmeter-server文件
- # vi jmeter-server 将jmeter-server中的RMI_HOST_DEF=-Djava.rmi.server.hostname=192.16.*.*(本机ip)
复制代码 运行./jmeter-server即可
备注:Linux下配景实行,启用server:nohup ./jmeter-server -Djava.rmi.server.hostname=192.16… &
查察确定jmeter是否启动乐成:ps axu | grep jmeter
题目3:长途启动slave呆板时,如出现“Jmeter nested exception is:java.net.ConnectException connection timed out:connect ”错误
缘故原由:大概是由于以下几种情况导致的:
slave上的ip与master设置文件中的ip不同等;
slave呆板上有假造网卡,导致ip地点不正确;
防火墙大概安全软件制止了RMI的通讯。
办理方法:
查察slave上的ip与master设置文件中的ip是否同等;
假如不同等,查察slave呆板上是否有假造网卡,将网卡关闭,在此启动Jmeter-server.bat,查察是否正确
查察防火墙是否关闭
注:centos7上关闭防火墙: firewall-cmd --state //查察防火墙状态
bash复制代码systemctl stop firewalld.service //关闭防火墙
题目4:当设置csv文件路径时,假如路径不对,无相应
缘故原由:Jmeter在读取csv文件时,假如找不到文件,会不停等候,而不会报错。
办理方法:将csv文件以“相对路径”定名,即将csv文件直接放入bin目次下,在Jmeter路径中直接写入文件名
题目5:(Linux)默认端看1099被占用,怎样关闭某个被占用端口的方法
缘故原由:Jmeter利用RMI举行分布式测试时,须要利用1099端口作为注册端口,假如该端口被其他步调占用,就会导致无法启动jmeter-server大概无法毗连slave。
办理方法:
查察当前全部tcp端口,实行下令:
查察全部1099端口利用情况,实行下令:
查察占用1099端口的步调pid,实行下令:
kill掉该进程,实行下令:
题目6:假如利用slave发送数据后,长时间无相应
缘故原由:大概是由于以下几种情况导致的:
发送的数据中存在csv参数文件,但是slave呆板的bin目次下没有该文件;
创建的tcp采样器中属性“TCPClient classname”处没有添加协议:org.apache.jmeter.protocol.tcp.sampler.BinaryTCPClientImpl
办理方法:
查察发送的数据中是否存在csv参数文件,查察slave呆板的bin目次下是否有该文件;
查察创建的tcp采样器中属性“TCPClient classname”处是否添加协议:org.apache.jmeter.protocol.tcp.sampler.BinaryTCPClientImpl
题目7:假如你的JMeter返回数据是乱码
缘故原由:大概是由于JMeter的默认编码和服务器的编码不同等,导致数据转换堕落。
办理方法:在JMeter安装路径的bin目次下,打开文件jmeter.properties,把Sampleresult.default.encoding的值改为 utf-8 即可。
题目8:启动jmeter时,报错:Error occurred during initialization of VM Could not reserve enough space for object heap errorlevel=1
缘故原由:大概是由于JMeter的默认堆内存巨细不敷以支持测试的负载,导致内存溢出。
办理方法:
bin目次下打开jmeter.bat文件,查找set HEAP,将set HEAP=-Xms128m -Xmx512m修改为set HEAP=-Xms512m -Xmx512m;
重新启动jmeter.bat即可
题目9:当jmeter用作数据库API测试时,假如数据库接口中参数中通报一个数组,如getApps(int nu, int appID[ ]),现实利用过程中报语法错误
缘故原由:大概是由于JMeter的默认参数分隔符是逗号,而数组参数须要用分号分隔,导致语法错误。
办理方法:在JMeter的数据库毗连设置中,将参数分隔符改为分号即可。
题目10:当jmeter在windows控制机中添加cvs文件参数化的时间,负载机没有没有文件的时间,长途启动后会实行失败。(纵然cvs文件中的变量没有被引用)
缘故原由:大概是由于JMeter在长途启动时,会先查抄参数文件的存在性,假如不存在,就会报错。
办理方法:在负载机上添加类似的参数文件,大概在控制机上删除参数文件的引用。
末了感谢每一个认真阅读我文章的人,礼尚往来总是要有的,固然不是什么很值钱的东西,假如你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋侪来说应该是最全面最完备的备战堆栈,这个堆栈也陪伴上万个测试工程师们走过最困难的旅程,盼望也能资助到你!
|