[Jmeter]平常工做中踩的坑

  1. [JMeter] Error in rconfigure() method java.rmi.ConnectException:Connection refused to host

问题分析:抛出的问题中,提示Java远程调用方法出现了异常,链接拒绝了master,多是主机与奴隶机通讯失去了联系php

解决办法:尝试把主机的 jmeter-server 与 奴隶机的 jmeter-server给重启下java


  1. [Jmeter] Non HTTP response code: java.net.NoRouteToHostException/Non HTTP response message: Cannot assign requested address (Address not available)

背景:多线程条件压测mysql

问题分析:看文字介绍说:不可以分配请求地址,可能端口已经占用了,致使地址不可用linux

解决办法:经网上查资料, 是因为linux分配的客户端链接端口用尽, 没法创建socket链接所致,虽然socket正常关闭,可是端口不是当即释放, 而是处于TIME_WAIT状态, 默认等待60s后才释放。 查看linux支持的客户端链接端口范围, 也就是28232个端口:git

cat  /proc/sys/net/ipv4/ip_local_port_range
32768 - 61000

解决方法: 1. 调低端口释放后的等待时间, 默认为60s, 修改成15~30s echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout 2. 修改tcp/ip协议配置, 经过配置/proc/sys/net/ipv4/tcp_tw_resue, 默认为0, 修改成1, 释放TIME_WAIT端口给新链接使用。 echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse 3. 修改tcp/ip协议配置,快速回收socket资源, 默认为0, 修改成1. echo 1 > /proc/sys/net/ipv4/tcp_tw_recyclegithub

经过上面3项调整, 压力测试运行正常。sql


3.[Jmeter] 502/Bad Gatewayapache

背景:多线程或者高并发下压测状况下数组

问题分析:多是多线程请求的状况下,达到了ng配置的最大链接数,致使出现了502/bad geteway缓存

解决办法:下降线程数进行测试(实际须要与开发沟通,该接口与实际业务的最大处理能力)


4.[Jmeter] Test failed: text expected to contain /200/

解决办法:检查断言


5.[Jmeter] java.lang.AbstractMethodError: com.mysql.jdbc.Connection.isValid(I)Z

解决办法:mysql.jdbc驱动包版本太低,更新mysql驱动包便可,注意:此包在lib下,而不是lib/ext下


6.[Jmeter] com.jcraft.jsch.JSchException: SSH_MSG_DISCONNECT: 2 Too many authentication failures

背景:利用key进行ssh链接服务器的时候,没法链接上服务器的状况

问题分析:多是JSchException这个插件的问题,通过测试,发现一旦用key链接数到达必定量时,就一定会报错

解决办法:重启Jmeter,从新链接下就行了(可能插件存在缺陷)


7.[Jmeter] ERROR o.a.j.e.ClientJMeterEngine: Error in rconfigure() method java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: java.lang.ClassNotFoundException: io.github.ningyu.jmeter.plugin.dubbo.sample.DubboSample (no security manager: RMI class loader disabled)

背景:Jmeter分布式测试

问题分析:进行分布式测试的时候,主机没法启动奴隶机

解决办法:经排查,是节点机缺乏dubbo插件的缘由,把插件放上去,重启下奴隶机的jmeter-server便可


8.[Jmeter]CannotResolveClassException: kg.apc.jmeter.vizualizers.CorrectedResultCollector

在jenkins上用maven方式压测的时候,提示没法加载这个类

问题分析:检查jmx文件,发现新增的插件在maven环境中没有

解决办法:要么把这个插件注入到maven仓库中,要么在jmx中删除这个插件,注意:必定要删除,而不是隐藏

9.[Jmeter]Engine is busy - please try later(引擎忙,请稍候再试)

背景:运行分布式测试时报错

问题分析:多是主机与奴隶机的信息通讯出了问题

解决办法:重启奴隶机与宿主机的jmeter-server服务(重启服务后,记得重启Jmeter.bat)

10.[Jmeter]if控制器判断接口没法识别

问题分析:if控制器只接收两个结果,true or false,多是返回的结果不为true or false

解决办法:利用Jmeter函数处理结果

好比:
${__groovy(1==1,)} -------->返回true
${__groovy(1==2,)} -------->返回false

11.[Jmeter]missing class com.thoughtworks.xstream.converters.ConversionException:

背景:在执行jmeter jmx文件的时候,报错

问题分析:多是缺乏了某个jar包

解决办法:检查下脚本所用的到jar包是否存在于jmeter lib或者lib/ext中

12.[Jmeter]java.lang.ArrayIndexOutOfBoundsException: 0

背景: 运行jmeter jmx任务的时候,直接报错

问题分析:数组索引越界异常

解决办法:贼坑,通过baidu,bing等多方面查询无果,看到日志中貌似有什么范围超限了,觉得是Jmeter工具备内存缓存什么的,或者对这个jmeter脚本有缓存记录。最后只能把脚本部份内容复制并从新建立了一个脚本,运行后发现一切正常。赶忙翻看原来的脚本,发现了一个特别蛋疼的事情,不知道何时手误,把【测试计划】给注释了。尼玛,坑的我老泪纵横

13.[jmeter]Error in NonGUIDriver java.lang.IllegalArgumentException: Problem loading XML from:'/home/bjqa/apache-jmeter-3.0/bin/../project/realnameauthINFTest/RNA_INFtest.jmx', missing class com.thoughtworks.xstream.converters.ConversionException: kg.apc.jmeter.vizualizers.CorrectedResultCollector : kg.apc.jmeter.vizualizers.CorrectedResultCollector ---- Debugging information ----

问题分析:这个多是因为当前jmeter运行环境中缺乏jar包致使的

解决办法:测试计划的脚本尽可能版本保持一致,或者添加对应的插件(好比:测试时用的脚本版本是5.1.1,那么在其余环境下运行的Jmeter脚本也尽可能使用5.1.1)

14.[Jmeter]执行perfmon控制器监控jmx的时候,服务端代理日志(ServerAgent报错:java.lang.RuntimeException: Invalid metric specified: jmx)

解决办法:参考https://blog.csdn.net/warm77/article/details/80534625

http://bbs.51testing.com/forum.php?mod=viewthread&tid=1020124&ordertype=1

先在服务机对应的tomcat配置文件中新增JAVA -D 参数 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=1099

相关文章
相关标签/搜索