用于在学习使用Jmeter过程中遇到的问题,以及解决方法

1.jmeter进行登录接口测试时。已经正确的设置了参数:用户名和密码,发送请求后,系统提示参数不存在。

如下图:

在这里插入图片描述
原因:这是由于在信息头管理器中,content-type 参数的值设置有误
修改后,可正常发送请求了

但是对于参数使用参数(form_data)发送时,系统还是会报错,提示:无效的JSON基元。。。
如下图:
在这里插入图片描述
原因:是因为使用参数栏设置参数时,不需要配置信息头,禁用后就可以正常发送请求并成功啦
在这里插入图片描述

2.Jmeter 使用json 提取器提取数据时,请求不运行

对于提取多个参数的请求。需要在json提取器中配置对应多个参数的默认值才可以正常运行

3.分布式运行jmeter-server 时,报错提示找不到文件

jmeter 启动jmeter-server.bat远程调用报错: java.io.FileNotFoundException: rmi_keystore.jks (系统找不到指定的文件。)…

原因:是因为主机或者从机,没有将ssl认证取消:
1、要找到 apache-jmeter-5.0\bin\jmeter.properties
2、修改server.rmi.ssl.disable=true ,并去除server.rmi.ssl.disable=true前的#(注释符号),重新启动jmeter-server.bat
3、查看命令窗口显示则启动成功

4.jmeter cli模式运行,从机收到了开始信号,也显示了结束信号。主机未接收到测试数据

这个可能有多种情况:
1.从机无法连接到主机
2.从机可以链接到主机,但是主机安装了虚拟机,存在多个虚拟网卡,从机server-agent 链接到了主机的虚拟网卡地址,导致主机无数据

5.使用jmeter + ANT + jenkins 时,使用cli 中的命令执行时,要注意jenkins安装目录/配置项目目录的问题,否则提示无权限

在这里插入图片描述
这时,需要将项目路径更改到其他路径就可以了。

6.更改指定项目任务的项目路径

第一步,点击要修改项目路径的任务/工程,进入工程页面
在这里插入图片描述
第二部,点击工程左侧配置菜单,进入工程配置页面
在这里插入图片描述
第三步,在配置页面,选择:General ,下面的高级,展开高级选项
在这里插入图片描述
勾选高级选项中的使用自定义的工作空间,然后设置工程的工作空间目录

在这里插入图片描述

这里需要注意,如果该工程源码管理方式从GIT、SVN拉取执行代码的话,设置完工作空间后,直接保存就可以了。

如果代码在本地管理,则需要将对应的工作空间下所有的文件数据都拷贝到刚刚自定义的工作目录里面去才行。

7. jenkins执行bat文件后,控制台已经看到脚本执行完成了,但是构建工程未完成,一致运行中

这种情况通常是由于在bat文件的最后,设置了pause,命令行执行到pause 后,会停止运行,等待用户的输入才能进行下一步运行。所以bat文件运行到这里就卡住了。

在这里插入图片描述

8.Jmeter运行请求时,请求参数传参需要进行加密处理时,直接填入加密后的数据,数据被转义,导致请求报错

这种请求通常需要进行转义的处理。或者对于加密类型的传参,调用加密函数,不要直接传入加密后的数据。

9.Jmeter使用POST请求时,接口参数都正确,提示服务器内部错误

在这里插入图片描述

Jmeter中包含Parameters[参数]和Body Data[消息体数据]两种参数化的方式

使用Parameters【参数】时,Content-Type不传,或者直接传application/x-www-from-urlencoded,若传application/json出错。
使用Body Data【消息体】时,Content-Type只能传application/json,否则报错。

因此,在使用不同的传参方式的时候。我们需要注意是否设置了消息头

10.使用jmeter执行sql语句插入中文时乱码

在直接使用sql语句插入中文字符或更新时,在数据库中中文字符显示乱码,这是编码格式的问题。需要我们在JDBC Connection Configuration URL 栏后面加上一个参数,设置编码格式。
这里设置为什么编码格式,要看数据库采用的是什么编码方式。例如数据库采用UTF-8编码。

在这里插入图片描述

在配置中URL地址增加参数:
&characterEncoding=UTF-8
在这里插入图片描述
修改后,重新执行语句。结果就显示为正常的中文了。

注意不一定设置为UTF-8.是要与数据库的编码方式一样!

11.JMETER执行接口测试时,返回400,提示"400 Header Folding"

jmeter 提示header folding
这是因为请求头数据被折叠,请求投数据过长被系统自动换行加入了/r/n等。或者投参数中存在乱码或对应的字符未做转义。修改对应头参数后,即可请求成功(注意:乱码也可能是编码方式未配置正确)
在这里插入图片描述
修改乱码数据后,重新请求:
在这里插入图片描述
请求成功,返回文件路径地址

12 使用http 请求发起请求时,参数均设置正确,接口返回400:非法的字符串

非法字符串
在这里插入图片描述
原因:这个可能是由于在复制接口地址过来时,接口地址中包含空格,导致系统报错
解决:检查接口地址,或重新填入接口地址后,问题可解决;如果还没有解决,重新编写一个请求,注意检查接口地址空格。

13 Jmeter运行多现场时,卡住,查看日志显示异常,系统内存溢出

在这里插入图片描述
原因:这只由于JMETER 默认分配的JVM太小了,默认是256m.当遇到这种情况时,可以修改jmeter.bat 文件中HEAP 字段对应的值为更大的值例如:512M
在这里插入图片描述
在这里插入图片描述
修改后,保存,重新启动JMETER,问题解决

14 使用JMETER运行脚本一段时间后,提示:Non HTTP response message: Address already in use: connect

在这里插入图片描述
这是由于我们系统在在发送HTTP请求时,需要为TCP/IP连接分配一个暂时的端口,客户端断开连接后,连接会有60S的等待时间,这时端口处于等待状态,不可被使用。JMETER在做压力测试时,段时间内会发送上万个HTTP请求,这导致系统可供分配的临时端口很快就会被占用,导致端口数量不够。
解决:
修改系统/服务器注册表中对应的等待时间和可用最大端口数量。
进入注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters,右键新建如下2项:

右键New->DWORD (32-bit) Value, 名称输入:TcpTimedWaitDelay,修改值为30(十进制),如下图所示。设置等待时间为30s。
右键New->DWORD (32-bit) Value, 名称输入:MaxUserPort,修改值为65534(十进制),如下图所示。设置最大连接数为60000。

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

在这里插入图片描述
如果设置为30S还是存在大量同样的报错信息,则可以把30S这个值继续调小。
设置完成后,重新启动电脑。在运行脚本基本就可以解决这个端口占用的问题了!

15 使用JMETER启动运行时,系统提示结果文件已经存在,需要做什么操作弹窗?

在运行JMETER脚本时,我们如果在结果文件路径中定义了文件路径和名称,如果生成对的结果文件没有及时删除,在次运行JMETER脚本时,系统会弹出如下提示弹窗,要求做选择:

在这里插入图片描述
很多时候,我们在使用的过程中不想每次运行都点击这个,可以在jmeter配置文件中配置,重启后就可以不需要在每次运行的时候弹出这个弹窗了
在jmeter bin 目录下,找到jmeter.properties 文件,编辑文件中配置:
resultcollector.action_if_file_exists=ASK
修改为:
resultcollector.action_if_file_exists=DELETE 或resultcollector.action_if_file_exists=APPEND
保存后,重启JMETER。就不会弹出这个弹窗了。
注:
ASK:默认值,表示每次运行要弹窗询问用户,用户选择处理方式
DELETE:删除,表示每次运行直接删除原来的结果文件,生成新的文件
APPEND:追加,表示将新的结果追加在原来的文件后面

重启后执行脚本,直接运行成功,未弹出弹窗了:
在这里插入图片描述

16 JMETER执行SQL查询时,提示:已生成用于更新的结果集

在这里插入图片描述
这是由于在JDBC Request 中,我们要执行的是SELECT 语句,但是在Query 类型选择的不是查询。
修改类型为SELECT 语句后,重新执行就可以了。在这里插入图片描述
查询成功:
在这里插入图片描述

17 JMETER压测执行SQL查询语句时,提示异常信息:Non HTTP response code: java.net.SocketTimeoutException/Non HTTP response message: Read timed out

这是由于数据库连接受限,查询请求与请求之间间隔时间太短,导致请求超时。

可以在查询请求上增加定时器,设置请求之间的时间。已保证可正常查询
在这里插入图片描述
注:这里可以使用固定定时器,设定固定的间隔时间,也可以使用随机定时器,设定随机的间隔时间,更贴合用户使用的实际场景

18 在服务器上面部署了server agent 并运行后,在监控端未获取到数据

这个可能是多种原因导致的:
1.服务端与客户端不在同一个网段
2.服务端与客户端存在于虚拟机上,要注意是否连接到虚拟机了
3.监控端数据结果记录文件路径是否完成、正确。不可包含空格等
4.server agent 监控使用的端口是否对外开放,是否已经被其他进程占用(阿里云默认4444不可外部访问)

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐