首页 新闻 会员 周边 捐助

jmeter接口测试报java.net.SocketException: Socket closed错误。

0
[待解决问题]

如题,jmeter报出java.net.SocketException: Socket closed,我查询了下,服务器是正常的,可以返回数据,基本确定问题出在我这边jmeter。查询原因,看到有人说:该异常在客户端和服务器均可能发生。异常的原因是己方主动关闭了连接后(调用了Socket的close方法)再对网络连接进行读写操作。

请问,这种错误要怎样解决?

liyangzbx的主页 liyangzbx | 初学一级 | 园豆:74
提问于:2017-08-21 10:08
< >
分享
所有回答(5)
0

参考https://wiki.apache.org/jmeter/JMeterSocketClosed

ycyzharry | 园豆:25683 (高人七级) | 2017-08-21 10:39

 参考这个改了,重启后还是报此错误。

支持(0) 反对(0) liyangzbx | 园豆:74 (初学一级) | 2017-08-21 10:55

@liyangzbx: 试试下面

修改/bin/jmeter.bat文件:找到这2行

set HEAP=-Xms256m -Xmx256m
set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m

改为:

set HEAP=-Xms256m -Xmx1024m
set NEW=-XX:NewSize=128m -XX:MaxNewSize=512m

支持(0) 反对(0) ycyzharry | 园豆:25683 (高人七级) | 2017-08-21 11:24

@ycyzharry: 之前看服务器有报gc overhead limit exceeded,查了下内存溢出的问题,已经把这两行改了,还是继续报错。

支持(0) 反对(0) liyangzbx | 园豆:74 (初学一级) | 2017-08-21 11:27

@liyangzbx: 看下这个http://blog.csdn.net/miss_hua/article/details/50549606

另外还要考虑是不是服务端问题

支持(0) 反对(0) ycyzharry | 园豆:25683 (高人七级) | 2017-08-21 13:23

@ycyzharry: 确认改这里可行,一直增加,直到60ms,不再报错了。但是有个疑问,改jmeter的配置是否会对压测结果有影响?

支持(0) 反对(0) liyangzbx | 园豆:74 (初学一级) | 2017-08-21 14:32

@liyangzbx: 有些间隔时间对结果比如响应时间等会有影响

支持(0) 反对(0) ycyzharry | 园豆:25683 (高人七级) | 2017-08-21 15:21

@ycyzharry: 是的,就是考虑的这个问题。如果影响真实响应时间就不行了

支持(0) 反对(0) liyangzbx | 园豆:74 (初学一级) | 2017-08-21 16:01

@liyangzbx: 测出来的结果和用其他工具测出来的结果对比下就知道了

支持(0) 反对(0) ycyzharry | 园豆:25683 (高人七级) | 2017-08-21 16:05
0

参考:http://littcai.iteye.com/blog/225916

金琥 | 园豆:2605 (老鸟四级) | 2017-08-21 11:09
0

请问园主最后是怎么解决的?

梅花俊 | 园豆:204 (菜鸟二级) | 2018-02-11 14:03
0

楼主 你最后怎么解决的呢,我也碰到这个问题了,怎么都找不到原因 也不是内存溢出 报错如下  能帮忙看下吗

java.net.SocketException: Socket closed
  at java.net.SocketInputStream.socketRead0(Native Method)
  at java.net.SocketInputStream.socketRead(Unknown Source)
  at java.net.SocketInputStream.read(Unknown Source)
  at java.net.SocketInputStream.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:140)
  at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:57)
  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:259)
  at org.apache.http.impl.conn.ManagedClientConnectionImpl.receiveResponseHeader(ManagedClientConnectionImpl.java:209)
  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:686)
  at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:488)
  at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:884)
  at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
  at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55)
  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:1166)
  at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1155)
  at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:475)
  at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:418)
  at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:249)
  at java.lang.Thread.run(Unknown Source)
彭路路 | 园豆:202 (菜鸟二级) | 2018-05-14 19:05
1

修改JMeter.properties文件配置
httpclient4.idletimeout=<time in ms> 设置成自己觉得合理的时间,一般可设置成10-60s(表示连接空闲10s后才会断开),注意这边单位是ms。修改完成后再次压测,错误不再有了

注意:如果是远程分布式执行每台执行机上均需修改参考资料

Melody测试攻城狮 | 园豆:202 (菜鸟二级) | 2019-04-11 10:38

我改了配置文件还是报这个错,请问大佬还有别的方法吗?

支持(1) 反对(0) 叶宝宝 | 园豆:200 (初学一级) | 2020-04-17 18:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册