Jmeter使用过程问题总结
一、某个请求的请求体中有中文字段,执行后该请求无法成功
解决方法:在取样器的内容编码处加上UTF-8
二、遇到接口请求后报401,请求未授权(或者信息头管理器只写了cookie请求不成功)
解决方法:在请求头寻找Headers中找到Blade-Auth加上去,或者其他的一些有关授权认证的字段信息(Authorization)
三、遇到接口请求需要用到之前接口的返回的set-cookie
解决方法:在之前接口加上一个正则表达式后置处理器,选择信息头来获取
四、取样器中如何设置上传文件接口
解决方法:通过抓包工具发现请求头中的Content-Type为multipart/form-data,这样我们不能再Jmeter的信息头管理器中加上Content-Type,必须在取样器中勾选对POST使用multipart/form-data,选择文件上传,参数名称为抓取到的参数名称,文件名称为所上传文件的文件路径
五、怎么进行跨线程组传参
解决方法:在上一个线程组的simple中增加一个JSON(正则表达式提取器)和一个Beanshell后置处理器,将JSON(正则表达式提取器)取出的参数利用Beanshell后置处理器设置为全局变量,然后第二个线程组中利用${__P(参数,)} 取这个全局变量;跨线程组传参时,必须要勾选住测试计划的“独立运行每个线程组”按钮。
六、执行请求时接口响应报500
解决方法:检查是否添加了http信息头管理器,加上Content-Type类型,检查抓包是否有token或者cookie有的话添加上去,一般来说POST请求都必须加Content-Type和Cookie。
七、Jmeter高并发压测时报错:Connection reset by peer: socket write error(响应报错为java.net.SocketException: Connection reset)
解决方法:新建txt,保存下面的脚本后把文件的后缀修改为.reg文件(注册表),保存后双击执行然后重启电脑,再次压测即不会出现报错。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\]
"MaxUserPort"=dword:fffe
"TcpTimedWaitDelay"=dword:1e
"TcpNumConnections"=dword:fffffe
"MaxFreeTcbs"=dword:7D0
"MaxHashTableSize"=dword:10000
字段含义:
MaxUserPort:最大动态端口数(Default = 5000, Max = 65534)
(Default = 5000, Max = 65534)
TcpTimedWaitDelay:TCP等待延迟时间(30)
TcpNumConnections:TCP连接数
MaxFreeTcbs:最大TCP控制块(1000-2000)
MaxHashTableSize:最大TCB Hash table数量(64-65536)
八、JMeter性能测试过程中偶尔卡顿
解决方法:在查看结果树里勾选“仅错误日志”选项
九、JMeter报错java.lang.outofMemoryError
解决方法:调整JVM内存的相关参数,堆内存的大小。将jmeter.bat脚本中的内存设置成如下配置:
set HEAP=-Xms2048m -Xmx4096m
set NEW=-XX:NewSize=2048m -XX:MaxNewSize=4096m
十、Jmeter报错返回Connection timed out: connect
解决方法:cmd打开控制台,运行如下代码
netsh int ipv4 set dynamicport tcp start=1025 num=64510
十一、Jmeter报错java.net.NoRouteToHostException: Cannot assign requested address (Address not available)
解决方法:取消勾选取样器中的使用keeplive选项
十二、使用http请求发起请求时,接口返回400:非法的字符串
解决方法:这个可能是由于在复制接口地址过来时,接口地址中包含空格,导致系统报错,需要检查接口地址是否存在空格。