测试系列:jmeter性能压测常见错误总结




一. jmeter压力测试报错:Non HTTP response message: Illegal character in path at index 43: 请求路径

问题

jmeter压力测试报错:Non HTTP response message: Illegal character in path at index 43:请求路径

在这里插入图片描述

原因

请求路径中用restful风格写参数,系统识别不出来这是一个变量

在这里插入图片描述

解决

参数使用 ${} 形式包裹起来

在这里插入图片描述
在这里插入图片描述




二. jmeter性能压测常见错误总结

jmeter常见错误:

错误一:

Response code: Non HTTP response code: java.net.SocketTimeoutException
Response message: Non HTTP response message: connect timed out

查看Load time的时间要大于request设置的connect time out时间,所以抛出该异常。可能是由于服务端有较多请求正在处理(且处理时间较长),导致JMeter不能连接上服务器而产生的。

错误二:

Java.NET.BindException: Address already in use: connect
原因:

短时间内new socket操作很多,而socket.close()操作并不能立即释放绑定的端口,而是把端口设置为TIMEWAIT 状态,过段时间(默认240s)才释放,(用netstat -na可以看到),最后系统资源耗尽(windows上是耗尽了pool of ephemeral ports ,这段区间在1024-5000之间)

解决方法:

在运行JMeter agent的机器上,添加注册表条目HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
MaxUserPort 65334
TcpTimedWaitDelay 30

错误三:

java.lang.OutOfMemoryError: Java heap space

原因&#x




三. jmeter 编写jmx脚本 遇到的报错内容汇总

报错内容

0,0,,Non HTTP response code: java.net.MalformedURLException,Non HTTP response message: Illegal character found in host: '/',test_configkeeper 1-1,text,false,Expected to find an object with property ['configSourceId'] in path $ but found 'java.lang.String'. This is not a json object according to the JsonProvider: 'com.jayway.jsonpath.spi.json.JsonSmartJsonProvider'.,784,0,1,1,null,0,0,0

报错内容也是很长,根本就看不懂啥意思,但是基本意思就是http请求没有正常发送,host不对,因为博主使用了HTTP Request Defaults,然后在HTTP Request Defaults中的server Name or ip 设置的内容是:
在这里插入图片描述
所以就把后面这个把他挪走就好了,仅剩下IP就好了,就解决了这个问题

报错2

Java.sql.sqlexception connot create poolableconnectionfactory

在这里插入图片描述

解决办法

MySQL.server 版本应该是mysql-connector-java-5.1.12-bin.jar,我一开始用的是mysql-connector-java-8.0.11.jar,版本应该是太高了。我的jre版本是1.8

报错3

ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of

代码如下:
在这里插入图片描述

解决办法

因为所有jmeter的内部变量都是String类型的,要做类型的强转,不能用int直接接收

// 关键代码
int after_number = Integer.parseInt(a);

在这里插入图片描述

报错4

在jmeter中的beanshell脚本内容中,是不支持泛型类型的填写,只能写成非泛型才能执行成功,修改后如下;如果想使用只能通过Java实现,然后打成jar包,之后在线程组导入jar包

在这里插入图片描述

报错5

报错内容
{“errorCode”:“InternalError”,“errorMessage”:“Could not read JSON: com.google.gson.stream.MalformedJsonException: Invalid escape sequence at line 26 column 51 path $.forwarderConfigs[0].paramConfig.requestBodyPatterns.; nested exception is com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Invalid escape sequence at line 26 column 51 path $.forwarderConfigs[0].paramConfig.requestBodyPatterns.}

原因是在请求的boby中有一串正则匹配的字符串,而这一串字符串在postman里面是可以请求成功的,但是jmeter里面不可以,因此定位问题用了很久:

"paramConfig": {
            "pathPatternMatch": true,
            "requestBodyPatterns": {
                "echoToken": "\"echoToken\"[\\s]*:[\\s]*\"(.+?)\"",
                "timeStamp": "\"timeStamp\"[\\s]*:[\\s]*\"(.+?)\"",
                "version": "\"version\"[\\s]*:[\\s]*\"(.+?)\"",
                "hotelSystemHotelId": "\"hotelId\"[\\s]*:[\\s]*\"(.+?)\""
            }
        }
解决办法:

就是在这个地方由 [\s]换成 [\\s]

"paramConfig": {
                "pathPatternMatch": true,
                "requestBodyPatterns": {
                    "echoToken": "\"echoToken\"[\\\s]*:[\\\s]*\"(.+?)\"",
                    "hotelSystemHotelId":"\"hotelId\"[\\\s]*:[\\\s]*\"(.+?)\"",
                    "timeStamp": "\"timeStamp\"[\\\s]*:[\\\s]*\"(.+?)\"",
                    "version": "\"version\"[\\\s]*:[\\\s]*\"(.+?)\""
              }
         }

报错6

报错内容
Error invoking bsh method: eval Sourced file: inline evaluation of: import java.text.SimpleDateFormat; import org.apache.jmeter.protocol.http.sample . . . '' Token Parsing Error: Lexical error at line 11, column 77. Encountered: "\n" (10), after : "\"{\\\"forwarderKey\\\": \\\"zoeOPERADERBYTEST9188\\\",\\\"type\\\": \\\"Kafka\\\"," 2021-06-24 15:54:16,086 WARN o.a.j.e.BeanShellPostProcessor: Problem in BeanShell script: org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval Sourced file: inline evaluation of:import java.text.SimpleDateFormat; import org.apache.jmeter.protocol.http.sample . . . ‘’ Token Parsing Error: Lexical error at line 11, column 77. Encountered: “\n” (10), after : “”{\“forwarderKey\”: \“zoeOPERADERBYTEST9188\”,\“type\”: \“Kafka\”,"
报错原因

定义String时换了行,所以报错

在这里插入图片描述

解决办法

定义时不换行

在这里插入图片描述










纳兰青华

jmeter压力测试报错:Non HTTP response message: Illegal character in path at index 43: 请求路径

queen_zoe

jmeter 编写jmx脚本 遇到的报错内容汇总

  • 19
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
JMeter是一种常用的性能测试工具,它可以帮助开发人员评估应用程序或网站在不同负载下的性能表现。对于性能压测,你可以使用JMeter来模拟多个用户同时访问系统,并收集各项指标,如响应时间、吞吐量和错误率等。通过这些指标,你可以评估系统在不同负载条件下的稳定性和性能表现。 为了进行JMeter性能压测,你可以按照以下步骤: 1. 安装JMeter:首先,你需要从官方网站下载并安装JMeter。 2. 创建测试计划:打开JMeter,并创建一个新的测试计划。在测试计划中,你可以添加线程组、定时器、取样器、监听器等组件,以设置并收集所需的压测数据。 3. 配置线程组:在线程组中,你可以设置并发用户数、循环次数、Ramp-Up时间等参数,以模拟真实用户的访问行为。 4. 添加取样器:取样器用于模拟用户发送请求,并收集服务器的响应数据。你可以根据需要选择合适的取样器,如HTTP请求、FTP请求等。 5. 配置监听器:监听器用于收集和显示压测结果。你可以选择适当的监听器,如查看结果树、聚合报告、图形结果等,来监控系统的性能指标。 6. 运行测试计划:在JMeter中,你可以点击“运行”按钮来执行测试计划。在执行过程中,JMeter会模拟多个并发用户发送请求,并记录和分析服务器的响应数据。 7. 分析测试结果:执行完测试计划后,你可以使用JMeter提供的各种报表和图表来分析性能测试结果。这些结果可以帮助你评估系统的性能瓶颈和优化方向。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坦笑&&life

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值