1、单个请求调试的时候报错:BODY参数中有encode的URL为参数
添加 BeanShell PreProcessor 前置处理器
sampler.getHeaderManager().removeHeaderNamed(“Content-Type”);
2、单机批量压测 报错
Non HTTP response code: java.net.SocketException/Non HTTP response message: Connection reset
方法1:修改%JMETER_HOME%/bin/system.properties文件中的java.net.preferIPv4Stack=true即可;
方法2:
启动配置文件路径:{JMeter 主目录}\bin
Linux 启动配置文件:jmeter.sh,添加如下启动参数设置:
export JVM_ARGS="-Djava.net.preferIPv4Stack=true"
Winows 启动配置文件:jmeter.bat,添加如下启动参数设置:
set JVM_ARGS="-Djava.net.preferIPv4Stack=true"
3、并发执行后Connection reset
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at org.apache.http.impl.io.SessionInputBufferImpl.streamRead(SessionInputBufferImpl.java:137)
at org.apache.http.impl.io.SessionInputBufferImpl.fillBuffer(SessionInputBufferImpl.java:153)
at org.apache.http.impl.io.SessionInputBufferImpl.readLine(SessionInputBufferImpl.java:280)
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:138)
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:56)
at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:259)
at org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:163)
at org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader(CPoolProxy.java:157)
at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:273)
at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:272)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.executeRequest(HTTPHC4Impl.java:935)
at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:646)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:66)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1296)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1285)
at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:638)
at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:558)
at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:489)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:256)
at java.lang.Thread.run(Unknown Source)
解决:
In user.properties file add the next 2 lines:
httpclient4.retrycount=1
hc.parameters.file=hc.parameters
In hc.parameters file add the following line:
http.connection.stalecheck$Boolean=true
Both files live in JMeter’s bin folder.
4、分布式操作
先启动slave,再启动control
5、分布式压测 Error in NonGUIDriver java.lang.IllegalArgumentException
jmeter linux压测报错:Error in NonGUIDriver java.lang.IllegalArgumentException: Problem loading XML from:…
问题原因:jmeter版本不一致,Windows与Linux中有差异
1、linux环境jmeter与win环境编写脚本的jmeter版本不一致,版本改为一致
2、脚本中存在中文,去除中文
3、脚本中存在类似于jp@gc - Active Threads Over Time 监听器,去除监听器 — 这个问题处理方法,在Linux中按照对于插件即可
6、端口 java.net.BindException: Address already in use: connect
java.net.BindException: Address already in use: connect
at java.net.TwoStacksPlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
排除问题:
首先先查看服务器的日志,发现没有报错。
然后查看nginx数据,发现请求数和测试发出的请求数不一致,服务器接收到的少,就想到丢失请求。
后来经过查找资料了解是windows 机器的问题,
原因:windows提供给TCP/IP链接的端口为 1024-5000,并且要四分钟来循环回收它们,就导致我们在短时间内跑大量的请求时将端口占满了,导致如上报错。
解决办法(在jmeter所在服务器操作):
1.cmd中输入regedit命令打开注册表;
2.在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters右键Parameters;
3.添加一个新的DWORD,名字为MaxUserPort;
4.然后双击MaxUserPort,输入数值数据为65534,基数选择十进制;
5.完成以上操作,务必重启机器,问题解决。
解决后的测试结果就不再报错:
本文详细介绍了在使用JMeter进行性能测试时遇到的各种错误及其解决方案,包括单个请求BODY参数编码问题、批量压测时的Connection reset错误、并发执行后的连接重置问题、分布式操作步骤及Error in NonGUIDriver异常处理,还提到了端口被占用的解决方法。
1万+

被折叠的 条评论
为什么被折叠?



