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

文章分析了在图片上传时遇到的IOFileUploadException异常,原因是客户端连接中断或服务器请求超时。问题源于请求经澳大利亚网关转发导致高耗时。解决方案包括调整SpringBoot的tomcat连接超时时间、优化代码处理速度或采用异步处理。经过配置调整,问题得到解决。

背景

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值