Unexpected EOF read on the socket问题研究及解决

背景

在图片上传的过程中,后台总是会看到很多这种异常的报错,对于客户端而言是一个超时中断的报错。

org.apache.tomcat.util.http.fileupload.impl.IOFileUploadException: Processing of multipart/form-data request failed. java.io.EOFException: Unexpected EOF read on the socket

异常原因

文件上传整个过程(请求->响应)还在进行中断开了连接,客户端连接中断,或者服务器请求时间超时

也就是说文件已经被上传到了服务器,正在处理中还没有结束,没到末尾就被客户端中断,超过了tomcat连接的最大时长后被关闭掉了。

探查

经过运维的一番查询,发现是美国当地的APP用户在发起请求的时候,流量转到了澳大利亚的网关,然后再通过澳大利亚的网关转发请求到美国的服务器上面,绕了一大圈子,怪不得耗时很高,以至于客户端都已经把链接中断了,服务端还没有处理完请求,导致了异常的发生,当运维重新调整好配置之后,变恢复正常了。

如果真的是文件太大或者要处理的逻辑很多的话,基于Spring Boot可以进行以下配置,直接在application配置文件里加上一个tomcat连接时长

server.connectionTimeout =180000

对应地 增加客户端的请求超时时间配置, 或者增加服务端的连接超时时间配置。

代码层面优化:减少请求到代码中的处理时间,若不关心处理结果,可以改为异步处理,这样就可以很快响应。
 

本篇文章如有帮助到您,请给「翎野君」点个赞,感谢您的支持。

首发链接:https://www.cnblogs.com/lingyejun/p/17542751.html

你可能感兴趣的:(Unexpected EOF read on the socket问题研究及解决)