java.net.SocketException Connection reset by peer socket write error

移动总部项目进行“配置分发滚动重启”功能测试,节点1800+,准备测试重启200节点,窗口设置为50,测试发现任务创建失败。

任务创建为rest服务调用execute服务的接口,其中rest服务直接报错,可以看到链接被reset,写数据错误“java.net.SocketException: Connection reset by peer: socket write error”,具体报错如下:java.net.SocketException Connection reset by peer socket write error

 

 

查看execute服务日志,发现接收参数没有拿到任何数据

 

java.net.SocketException Connection reset by peer socket write error

当窗口为20的时候功能正常,窗口设置为50的时候报错,初步推测是数据量的问题,打印传输参数,发现窗口为50的参数大小近3Mb.

 

因为每个命令都包含了配置文件的全部内容,导致50个任务并发执行时的数据量过大,这里我们将配置文件详情改成配置文件ID,执行时关联获取,数据量将为500k左右。

至于连接为何被中断,发现可能跟tomcat版本有关系,下面为相关文章,待祥查。

后续此处也是个隐患。

https://bz.apache.org/bugzilla/show_bug.cgi?id=56725

https://github.com/cloudant/java-cloudant/issues/317

https://www.cnblogs.com/shoren/p/httpclient-connectionreset.html