Jmeter进行分布式测试时需要特别注意的:
1)如果使用csv进行参数化,需要把参数文件在每台slave上拷贝一份,最好都放置在bin目录下,因为Jmeter会直接从bin目录下查找;
2)slave机器执行脚本时,若断言执行成功则在master机器上是看不到请求响应数据的,只有在断言出错时才可键slave的返回;
3)若要使用Jmeter分布式进行测试,TCP取样器中“TCPClient classname”该栏必须填写对应的协议;
4)以十六进发送tcp数据包时,TCP取样器中“End of line(EOL) byte value”必须填写数据包的结束符,否则jmeter会一直等待,无响应。
Jmeter分布式测试常见问题:
问题1:在master上运行jmeter-server.bat时,出现“Exception creating connection to:192.16.*.*;nested exception is:java.io.FileNotFoundException:rmi_keystore.jks(系统找不到指定的文件)”错误
解决方案:修改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:在slave上(linux系统)运行jmeter-server时,出现“An error occurred: Cannot start. localhost is a loopback address”错误
解决方案:方法一:运行以下命令:./jmeter-server -Djava.rmi.server.hostname=192.16.*.*(本机ip)
方法二:修改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 ”错误
解决方案:
1)查看slave上的ip与master配置文件中的ip是否一致;
如果不一致,查看slave机器上是否有虚拟网卡,将网卡关闭,在此启动Jmeter-server.bat,查看是否正确
2)查看防火墙是否关闭
注:centos7上关闭防火墙: firewall-cmd --state //查看防火墙状态
systemctl stop firewalld.service //关闭防火墙
问题4:当设置csv文件路径时,如果路径不对,无响应
解决方法:将csv文件以“相对路径”命名,即将csv文件直接放入bin目录下,在Jmeter路径中直接写入文件名
问题5:(Linux)默认端看1099被占用,如何关闭某个被占用端口的方法
1)netstat -ntlp //查看当前所以tcp端口
nestat -ntulp |grep 1109 //查看所有1109端口使用情况
2)lsof -i:1109 //查看占用1109端口的程序pid
3)kill -9 1109 //kill掉该进程
(windows)上关闭已被占用的端口
http://www.jb51.net/os/windows/203315.html
如1099端口被占用:1)在cmd命令行下输入以下命令:netstat -aon|findstr "1099",回车之后就可以看见列表中的PID,然后根据PID在电脑的任务管理器中查看对应的占用程序,然后将其关闭即可;2)然后根据查询的PID找到对应的进程,我们可以看到占有1099这个程序的进程ID,如:5264,继续输入命令【tasklist|findstr "5264"】,5264就是进程ID,现在知道是哪个进程占用的我们的端口,即可在任务管理器中杀掉该进程。
问题6:如果使用slave发送数据后,长时间无响应
问题排查:
1)查看发送的数据中是否存在csv参数文件,查看slave机器的bin目录下是否有该文件;
2)查看建立的tcp采样器中属性“TCPClient classname”处是否添加协议:org.apache.jmeter.protocol.tcp.sampler.BinaryTCPClientImpl
问题7:如果你的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
解决方法:1)bin目录下打开jmeter.bat文件,查找set HEAP,将set HEAP=-Xms128m -Xmx512m修改为set HEAP=-Xms512m -Xmx512m;2)重新启动jmeter.bat即可
问题9:当jmeter用作数据库API测试时,如果数据库接口中参数中传递一个数组,如getApps(int nu, int appID[ ]),实际使用过程中报语法错误
解决方法:可尝试在调用该接口传参中加入关键字“ARRAY”,如getApps(3, ARRAY[7,8])