【问题标题】:Jmeter java.net.SocketException: Connection reset (after changing parameters)Jmeter java.net.SocketException:连接重置(更改参数后)
【发布时间】:2017-09-19 12:40:25
【问题描述】:

最近我正在编写将测试 3rd 方服务的性能脚本。

测试很简单,每个线程需要POST一个请求。 线程数 - 100, 加速 - 680 秒

执行最大活动线程数为 12。 我正在使用 Jmeter 3.2 版本,但也在 2.1 上尝试过。

不幸的是,我收到了java.net.SocketException:20-30% 请求的连接重置错误。文末全错。

我已经在这里更改了许多类似主题中提到的属性(例如:I m getting java.net.SocketException: Connection reset exception while running a load test using Jmeter)。

我已添加:

httpclient4.retrycount=1
hc.parameters.file=hc.parameters 

在用户属性中

http.socket.timeout$Integer=120000 (such big value is set just for test reasons ;) )
http.connection.stalecheck$Boolean=true in hc.parameters

httpclient.timeout=1200000 
httpclient4.idletimeout=1200000 (same as previous) in jmeter.properties

我还将“高级”选项卡中的 HTTP 请求采样器默认值更改为: HTTPClient4 并且两个超时都设置为 120000

注意:如此大的测试超时与某些请求在服务端可能占用的时间有关(甚至 10 分钟)。

不幸的是,在所有这些更改之后,我仍然收到此错误,负责服务的人员在分析后回答说这与他们无关。

完全错误:

java.net.SocketException: Connection reset;
    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:158);
    at org.apache.http.impl.io.SocketInputBuffer.fillBuffer(SocketInputBuffer.java:82;
    at org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:271);
    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.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:281);
    at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:257);
    at org.apache.jmeter.protocol.http.sampler.hc.ManagedClientConnectionImpl.receiveResponseHeader(ManagedClientConnectionImpl.java:199);
    at org.apache.jmeter.protocol.http.sampler.MeasuringConnectionManager$MeasuredConnection.receiveResponseHeader(MeasuringConnectionManager.java:212);
    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.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:684);
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:486);
    at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:835);
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83);
    at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.executeRequest(HTTPHC4Impl.java:654);
    at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:413);
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:74);
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1189);
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1178);
    at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:491);
    at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:425);
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:254);
    at java.lang.Thread.run(Unknown Source);

【问题讨论】:

  • 用10个线程不会出错?
  • 没有用 10 个线程进行测试,但是在实时查看执行时(即使在少于 10 个线程处于活动状态时也会出现控制台(非 GUI 模式)错误的部分报告)
  • 对答案有任何反馈吗?如果可以,它应该被接受和投票,以便对其他人有所帮助。谢谢
  • 我不知道。我最后一次尝试是在请求中添加 keep-alive 标头,不幸的是测试被取消了,我们现在无权从服务中获取响应。测试有可能重新开始,在这种情况下,如果有帮助,我会提供更新。

标签: jmeter socketexception


【解决方案1】:

首先使用JMeter 3.2版本。

那先手动试一下网站,能不能正常工作?

如果是,请使用 1 个线程运行 JMeter 并检查,如果发生连接重置,那么您很可能不会像浏览器一样重现。在这种情况下,请录制并重试。

如果这种情况只发生在许多用户身上,那么您的服务器会由于问题或配置错误而拒绝连接。

【讨论】:

  • 谢谢回复。它只是网络服务,但例如通过邮递员检查它可以正常工作。一一发送请求不会显示此类错误。当超过 1 个线程处于活动状态时会出现问题。我可以观察到的是,当连接重置时,所有当前活动的线程都会立即收到此错误。在请求/响应详细信息中,我可以看到“以字节为单位的大小”属性对于这些情况为 0,这就是为什么 im not sure if it isnt 出现问题的原因。
  • 所以看起来更像是服务器问题
  • 您好,您想要什么更新?我想你可以接受答案不? IMO 这是一个服务器问题,但我需要访问您的环境才能进行检查。
猜你喜欢
  • 2022-01-18
  • 1970-01-01
  • 2010-09-08
  • 2021-03-10
相关资源
最近更新 更多