我正在使用负载为 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)
Run Code Online (Sandbox Code Playgroud)
小智 -1
自 JMeter 2.10 以来连接重置?如果您最近升级到 JMeter 2.10 或 2.11,您可能已经注意到此类错误有所增加:
套接字关闭 非 HTTP 响应代码:org.apache.http.NoHttpResponseException(目标服务器响应失败)
说明 此类错误的增加可以通过两个设置更改来解释:
JMeter 2.10 中已禁用失败请求的重试(仅限幂等请求) HTTP 客户端 3 和 4 实现中的过时检查已在 JMeter 2.11 中禁用 为什么要进行这些更改?以前的重试默认设置导致某些类型的失败中的请求数量增加。
之前的陈旧检查有点昂贵,因为它适用于每个样本。这就是为什么默认值被更改为禁用它的原因。
重试或过时检查可以隐藏服务器配置上的问题:
服务器无法发送(可选)Keep-Alive 标头 不堪重负的服务器拒绝连接,重试会增加负载 更改配置:如果您认为此服务器行为正常,则可以在两个位置更改配置:
对于 HttpClient 4,在 user.properties set 中启用重试:
httpclient4.retrycount=1 这将使 JMeter 重试一次。对于 HttpClient 3,在 user.properties 中设置:
httpclient3.retrycount=1 这将使 JMeter 重试一次。
为 HC4 实施启用过时检查:
在用户属性中:
hc.parameters.file=hc.parameters 在hc.parameters中设置:
http.connection.stalecheck$Boolean=true 对于 HC3 实施:
在用户属性中:
httpclient.parameters.file=httpclient.parameters 在httpclient.parameters中设置:
http.connection.stalecheck$Boolean=true JMeter 2.12 中的新设置 即将推出的 JMeter 版本添加了一个设置,用于在服务器不发送 Keep-Alive 标头的情况下添加空闲连接超时。
该值以毫秒为单位:
httpclient4.idletimeout=
| 归档时间: |
|
| 查看次数: |
28189 次 |
| 最近记录: |