Jmeter是一款开源的性能测试工具,使用Jmeter进行分布式测试时,也需要注意一些细节和问题,否则可能会影响测试结果的准确性和可靠性。 如果使用csv文件进行参数化,即通过读取csv文件中的数据来为测试脚本提供不同的输入值,那么需要注意以下两点: slave机器执行脚本时,若断言执行成功,则在master机器上是看不到请求响应数据的,只有在断言出错时才可见slave的返回。这是为了节省网络带宽和提高测试效率,因为在分布式测试中,通常只关心测试结果的统计和分析,而不需要查看每个请求的详细数据。如果需要查看slave的响应数据,可以在slave机器上打开jmeter.log文件,或者在master机器上设置Jmeter属性 若要使用Jmeter分布式进行TCP协议的测试,需要注意以下两点: 如果在Linux系统下使用Jmeter,需要配置jmeter环境变量,以便于在命令行中直接启动jmeter。具体步骤如下: 原因:Jmeter4.0以上的版本,默认启用RMI连接的安全通信,需要创建密钥库。所以如果没有创建密钥库,就会出现这个错误。 解决方法: 备注:将master和slave机器上的jmeter.properties文件 参数server.rmi.ssl.disable均改为true 其中linux上是用以下命令:vi jmeter.properties 使用/server.rmi.ssl.disable/进行查找 原因:Jmeter默认使用localhost作为RMI的主机名,但是localhost是一个回环地址,不能用于远程连接。 解决方法: 运行./jmeter-server即可 备注:Linux下后台执行,启用server:nohup ./jmeter-server -Djava.rmi.server.hostname=192.16.. & 查看确定jmeter是否启动成功:ps axu | grep jmeter 原因:可能是由于以下几种情况导致的: 解决方法: 注:centos7上关闭防火墙: firewall-cmd --state //查看防火墙状态 原因:Jmeter在读取csv文件时,如果找不到文件,会一直等待,而不会报错。 解决方法:将csv文件以“相对路径”命名,即将csv文件直接放入bin目录下,在Jmeter路径中直接写入文件名 原因:Jmeter使用RMI进行分布式测试时,需要使用1099端口作为注册端口,如果该端口被其他程序占用,就会导致无法启动jmeter-server或者无法连接slave。 解决方法: 原因:可能是由于以下几种情况导致的: 解决方法: 原因:可能是由于JMeter的默认编码和服务器的编码不一致,导致数据转换出错。 解决方法:在JMeter安装路径的bin目录下,打开文件jmeter.properties,把Sampleresult.default.encoding的值改为 utf-8 即可。 原因:可能是由于JMeter的默认堆内存大小不足以支持测试的负载,导致内存溢出。 解决方法: 原因:可能是由于JMeter的默认参数分隔符是逗号,而数组参数需要用分号分隔,导致语法错误。 解决方法:在JMeter的数据库连接配置中,将参数分隔符改为分号即可。 原因:可能是由于JMeter在远程启动时,会先检查参数文件的存在性,如果不存在,就会报错。 解决方法:在负载机上添加相同的参数文件,或者在控制机上删除参数文件的引用。Jmeter分布式测试的注意事项和常见问题
Jmeter分布式测试时需要特别注意的几个方面
1. 参数化文件的位置和内容
2. slave机器的响应数据
mode=Standard
,但这样会增加网络开销和测试时间。3. TCP取样器的配置
org.apache.jmeter.protocol.tcp.sampler.BinaryTCPClientImpl
,如果要发送文本数据,就要填写org.apache.jmeter.protocol.tcp.sampler.TCPClientImpl
,否则可能会出现数据格式错误或无法发送的问题;4. Linux下配置jmeter环境变量
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
source /etc/profile
jmeter -v
Jmeter分布式测试的常见问题和解决方法
问题1:在master上运行jmeter-server.bat时,出现“Exception creating connection to:192.16..;nested exception is:java.io.FileNotFoundException:rmi_keystore.jks(系统找不到指定的文件)”错误
问题2:在slave上(linux系统)运行jmeter-server时,出现“An error occurred: Cannot start. localhost is a loopback address”错误
# vi jmeter-server 将jmeter-server中的RMI_HOST_DEF=-Djava.rmi.server.hostname=192.16.*.*(本机ip)
问题3:远程启动slave机器时,如出现“Jmeter nested exception is:java.net.ConnectException connection timed out:connect ”错误
systemctl stop firewalld.service //关闭防火墙
问题4:当设置csv文件路径时,如果路径不对,无响应
问题5:(Linux)默认端看1099被占用,如何关闭某个被占用端口的方法
netstat -ntlp
nestat -ntulp |grep 1099
lsof -i:1099
kill -9 1109 //kill掉该进程
问题6:如果使用slave发送数据后,长时间无响应
问题7:如果你的JMeter返回数据是乱码
问题8:启动jmeter时,报错:Error occurred during initialization of VM Could not reserve enough space for object heap errorlevel=1
问题9:当jmeter用作数据库API测试时,如果数据库接口中参数中传递一个数组,如getApps(int nu, int appID[ ]),实际使用过程中报语法错误
问题10:当jmeter在windows控制机中添加cvs文件参数化的时候,负载机没有没有文件的时候,远程启动后会执行失败。(即使cvs文件中的变量没有被引用)
总结
以上就是勇哥今天为各位小伙伴准备的内容,如果你想了解更多关于Python自动化测试的知识和技巧,欢迎关注:
我的公众号:百态测试
博客(奈非天的主页 - 博客园 (cnblogs.com))
我会不定期地分享更多的精彩内容。感谢你的阅读和支持!
本文来自博客园,作者:奈非天,转载请注明原文链接:https://www.cnblogs.com/Nephalem-262667641/p/17460169.html
标签:文件,常见问题,slave,server,测试,jmeter,Jmeter,分布式 From: https://www.cnblogs.com/Nephalem-262667641/p/17809208.html