Unexpected EOF read on the socket问题研究及解决
背景
在图片上传的过程中,后台总是会看到很多这种异常的报错,对于客户端而言是一个超时中断的报错。
1 | 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连接时长
1 | server.connectionTimeout = 180000 |
对应地 增加客户端的请求超时时间
配置, 或者增加服务端的连接超时时间
配置。
代码层面优化:减少请求到代码中的处理时间,若不关心处理结果,可以改为
异步处理
,这样就可以很快响应。本篇文章如有帮助到您,请给「翎野君」点个赞,感谢您的支持。
出处:http://www.cnblogs.com/lingyejun/
若本文如对您有帮助,不妨点击一下右下角的【推荐】。
如果您喜欢或希望看到更多我的文章,可扫描二维码关注我的微信公众号《翎野君》。
转载文章请务必保留出处和署名,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
2017-07-11 二叉树的遍历
2017-07-11 Java泛型
2017-07-11 sql优化
2017-07-11 Http协议面试题