我使用的是3-6个用户负载的JMeter。我经常得到下面的异常。请告诉我这个问题的原因是什么?这是JMeter的问题还是服务器应用程序的问题?提前谢谢你。
下一个异常是:
java.net.SocketException: Socket closed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at sun.security.ssl.InputRecord.readFully(Unknown Source)
at sun.security.ssl.InputRecord.read(Unknown Source)
at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
at sun.security.ssl.SSLSocketImpl.readDataRecord(Unknown Source)
at sun.security.ssl.AppInputStream.read(Unknown Source)
at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:166)
at org.apache.http.impl.io.SocketInputBuffer.fillBuffer(SocketInputBuffer.java:90)
at org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:281)
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:92)
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:61)
at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:254)
at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:289)
at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:252)
at org.apache.http.impl.conn.ManagedClientConnectionImpl.receiveResponseHeader(ManagedClientConnectionImpl.java:191)
at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:300)
at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:127)
at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:715)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:520)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.executeRequest(HTTPHC4Impl.java:481)
at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:298)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:74)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1105)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1094)
at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:429)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:257)
at java.lang.Thread.run(Unknown Source)发布于 2019-08-15 03:12:24
好吧,我有这个问题,我尝试和工作的解决方案是更新Java版本。从1.8到1.12。
因为它是Jar (编译的Java程序),所以如果您尝试使用以前版本的java运行它,可能会导致此错误。
发布于 2020-10-23 06:04:03
这对我来说很有效:
在您的计算机菜单上搜索"Update Java“并选择它,然后在Java控制面板上选择"Update”选项。现在,选择“立即更新”。等待安装完成,不要忘记在安装结束前选择"Ok“。
当Java被更新时,POST在JMeter上工作。这是AndiFB答案的相同解决方案。
发布于 2018-10-16 15:46:30
是否从JMeter 2.10开始重置连接?如果您最近升级到JMeter 2.10或2.11,您可能已经注意到此类型的错误增加:
套接字关闭非HTTP响应码: org.apache.http.NoHttpResponseException (目标服务器响应失败)
解释此类错误的增加可以通过两个设置更改来解释:
在HTTP2.10中禁用了失败请求的重试(仅限幂等请求),在JMeter 2.11中禁用了JMeter Client 3和4实现中的陈旧检查。为什么要进行这些更改?以前的重试默认设置导致在某些类型的失败中请求数量增加。
以前的陈旧检查有点昂贵,因为它适用于每个样本。这就是为什么默认设置被更改为禁用它的原因。
重试或过时检查可能会隐藏服务器配置方面的问题:
服务器无法发送(可选) Keep-Alive报头使服务器拒绝连接,重试将增加负载更改配置:如果您认为此服务器行为正常,则可以在两个位置更改配置:
在user.properties set中为HttpClient 4启用重试:
httpclient4.retrycount=1这将使JMeter重试一次。对于HttpClient 3,在user.properties set中:
httpclient3.retrycount=1这将使JMeter重试一次。
启用HC4实施的陈旧检查:
在user.properties中:
hc.parameters集合中的hc.parameters.file=hc.parameters:
用于HC3实施的http.connection.stalecheck$Boolean=true:
在user.properties中:
httpclient.parameters集合中的httpclient.parameters.file=httpclient.parameters:
http.connection.stalecheck$Boolean=true JMeter 2.12即将发布的JMeter版本中的新设置添加了一项设置,用于在服务器不发送Keep-Alive报头时添加空闲连接超时。
该值以毫秒为单位:
httpclient4.idletimeout=
https://stackoverflow.com/questions/25521368
复制相似问题