【Jmeter学习】Jmeter常见问题

问题1

JMeter连接Mysql数据库时,JDBC Request报错,提示时区值不能被识别解析:

Cannot create PoolableConnectionFactory (The server time zone value '???��������??��??' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.)

 
 

 

解决方案

修改JDBC Connection Configuration配置中的Database URL,在其末尾加上?serverTimezone=UTC

 
 

重新发送请求,此时JDBC Request已可正常获取到Response data

 



问题2

发起HTTP请求调用接口,接口内容是插入数据到数据库,数据中包含中文,插入到数据库后数据变成了??

解决方案:请求配置中添加utf-8

image.png

问题3

jmeter分布式执行远程机报错,提示“Engine is busy – please try later”

解决办法1:

1.在停止jmeter测试的同时,使用master中的' Remote Stop all '选项,这会杀死远程机进程上正在运行的线程。
2.远程机的jmeter重新启动“jmeter-server.bat”,并重新开始测试。

解决方法2:一般用的比较少,这是在有wifi和物理网线同时有效的情况下用的。

 

问题4

启动压力机的时候,直接./jmeter-server,会报如下错误  

           错误原因:127.0.0.1是本机, 一个回路地址, 没有指定地址

          正确的启动方式:启动命令加一个参数, IP地址写压力机对应的地址

          ./jmeter-server   -D java.rmi.server.hostname=118.24.178.224

          

 

问题5

遇到的问题:

       启动remote测试后,Agent 机器 收到任务,且控制台显示:”Starting the test on host 192.168.1.132:1099 @ ***“,说明控制机分派上agent机上的测试成功,但是 一直卡在这里不动了,控制机一直没有显示 任务执行状况以及收到测试结果(任务一直不结束,卡住了)。

解决方法:

(1)telnet 192.168.1.132 1099  是通的,说明 控制机 连agent 机是OK了,问题排除。

(2)查看 agent机上 c:\apache-jmeter-2.13\bin 中 jmeter-server.log 日志文件,发现有错误: jmeter.samplers.RemoteListenerWrapper: testStarted(host) java.rmi.ConnectException: Connection refused to host: 169.254.123.36; nested exception is: 
java.net.ConnectException: Connection timed out: connect
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source)
at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source)
at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source)
at sun.rmi.server.UnicastRef.invoke(Unknown Source)
at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(Unknown Source)
at java.rmi.server.RemoteObjectInvocationHandler.invoke(Unknown Source)
at $Proxy1.testStarted(Unknown Source)
at org.apache.jmeter.samplers.RemoteListenerWrapper.testStarted(RemoteListenerWrapper.java:85)
at org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfStart(StandardJMeterEngine.java:216)
at org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:336)
at java.lang.Thread.run(Unknown Source)

推断原因是 agent 连不了控制机,被拒绝,连接超时。

问题产生了: 为何 控制机 IP变成了 169.254.123.36, IP不是 192.168.1.117 吗?(问题的根源在于:我安装的VMware的一个windows虚拟机的网络设置成了“Bridge 并勾选 Replicate physical network IP address所以在controller机器的网络路由设置中,显示的网络连接为:VirtualBox Host-Oly Network,在这个连接上右键,选择“Disable“,禁用掉,然后重新运行jmeter-server.bat,在窗口中发现IP已经正确了,这样问题就解决了) 估计问题就在这里。

(3) 果断换了一台新安装的 windows 机器作为控制机,然后 重新试了一下,没有问题。在控制机运行测试,agent机器会收到测试“Starting the test on host 192.168.1.132:1099 @ **”,执行结束后,agent机上有日志“Finished the test on host 192.168.1.132:1099 @ ***”,控制机上也有相应的测试结果,问题解决。

总结: 问题还是 连接的问题,如果控制机和agent机连接有问题,就会有此类问题,所以建议 控制机和测试机都是干净的机器,这样避免 安装了一些软件,修改了 C:\Windows\System32\drivers\etc中HOST文件,等问题。

这个问题还有一种情况:控制机和负载机在不同的局域网,也会导致这个问题,所以压力机和控制机尽量在同一个局域网内

测试中发现的问题:

(1) 发现用一台 client 200个用户测试和 用分布式 2个agent 各自100个用户,测试出来的结果 差别太大,不知道为什么?

(2)  发现用一台 client 200个用户测试和 用分布式 2个agent 各自200个用户,测试出来的结果 结果基本是一致的,不知道为什么?

如果真是这样的话,那么jmeter分布式测试出来的结果太不科学了,我们到底相信那个? 问题持续研究中......

这两个问题解决方案:

把controller机器,2个agent机器的时间设置一致,再次测试,问题基本解决了。

jmeter相关问题可以多看日志:

 controller的日志看bin目录下面的jmeter.log

 压力机的日志看bin目录下面的jmeter-server.log

其他问题:https://www.cnblogs.com/longronglang/p/12961111.html

 

posted @ 2020-08-19 15:08  gtea  阅读(553)  评论(0编辑  收藏  举报