我正在使用JMeter,负载为3-6个用户。我经常在下面得到例外。请告诉我这个问题的原因是什么?这是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)
答案 0 :(得分:2)
可能是JMeterSocketClosed维基页面描述的情况吗?
答案 1 :(得分:0)
好吧,我遇到了这个问题,我尝试并尝试过的解决方案是更新Java版本。从1.8到1.12。
由于它是Jar(已编译的Java程序),如果尝试使用Java的早期版本运行它,则可能会导致此错误。
答案 2 :(得分:0)
这对我有用:
在计算机菜单上搜索“更新Java”并选择它,然后在Java控制面板上选择“更新”选项。现在,选择“立即更新”。等待安装,不要忘了最后选择“确定”。
更新Java后,POST可以在JMeter上运行。这与AndiFB的答案相同。
答案 3 :(得分:-2)
自JMeter 2.10以来的连接重置? 如果您最近升级到JMeter 2.10或2.11,则可能已经注意到这种类型的错误增加了:
插座关闭 非HTTP响应代码:org.apache.http.NoHttpResponseException(目标服务器无法响应)
说明 此类错误的增加可以通过两个设置更改来解释:
失败请求的重试(仅幂等)已在JMeter 2.10中禁用 JMeter 2.11中已禁用HTTP客户端3和4实现中的过时检查 为什么会有这些变化? 先前的重试默认设置导致某些类型的失败中的请求数量增加。
以前的过时检查有点昂贵,因为它适用于每个样本。这就是更改默认设置以禁用它的原因。
重试或过时的检查会隐藏服务器配置上的问题:
服务器无法发送(可选)Keep-Alive标头 不堪重负的服务器拒绝连接,重试会增加负载 更改配置: 如果您认为此服务器行为正常,则可以在两个位置更改配置:
启用重试 对于HttpClient 4,在user.properties中设置:
httpclient4.retrycount = 1 这将使JMeter重试一次。对于HttpClient 3,在user.properties中设置:
httpclient3.retrycount = 1 这将使JMeter重试一次。
启用过时检查 对于HC4实施:
在user.properties中:
hc.parameters.file = hc.parameters 在hc.parameters中设置:
http.connection.stalecheck $ Boolean = true 对于HC3实施:
在user.properties中:
httpclient.parameters.file = httpclient.parameters 在httpclient.parameters中设置:
http.connection.stalecheck $ Boolean = true JMeter 2.12中的新设置 即将发布的JMeter版本添加了一个设置,以在服务器不发送Keep-Alive标头时添加空闲连接超时。
此值以毫秒为单位:
httpclient4.idletimeout =