【方案探讨】 出现java.io.IOException解决方法

出现java.io.IOException解决方法

  • 解决问题的博客:探索新思路,共同成长 🌱
    • 壹、出现背景
    • 贰、排查方向
    • 叁、场景复现
      • 1、放单个大文件
      • 2、修改后端请求其他服务器时间
      • 3、多次请求多个文件
      • 4、单词请求多个文件
    • 肆、解决方案
    • 谢谢您的阅读和支持!一起学习,一起成长!🌟

解决问题的博客:探索新思路,共同成长 🌱

欢迎来到我的博客!在这里,我将分享我对问题的独特见解和解决方案。通过这篇博客,我希望能够为您带来新的思考方式,启发您寻找问题的不同角度,并探索创新的解决方案。

每个问题都是一个机会,是一个学习的过程。在这里,我将分享我对问题的思考过程和解决方案,希望能够激发您思考,激励您不断进步。

我非常期待听到您的想法、建议和反馈!请随时在评论区分享您的观点,让我们一起交流,一起学习,共同成长。

让我们开始探索问题的世界吧!一起迎接挑战,一起前行!✨

壹、出现背景

在前端上传文件之后,业务工作流程发起失败。当时定位问题①文件问题②流程出现问题。登录正式服K8S看后端报错,发现出现java.io.IOException报错。

2024-04-17 15:45:58.504 [http-nio-9091-exec-8] ERROR c.b.c.w.e.GlobalExceptionHandler - Failed to parse multipart servlet request; nested exception is java.io.IOException: org.apache.tomcat.util.http.fileupload.FileUploadException: java.io.EOFException: Unexpected EOF read on the socket
org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.handleParseFailure(StandardMultipartHttpServletRequest.java:124) org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.parseRequest(StandardMultipartHttpServletRequest.java:115) org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.<init>(StandardMultipartHttpServletRequest.java:88) org.springframework.web.multipart.support.StandardServletMultipartResolver.resolveMultipart(StandardServletMultipartResolver.java:87)
org.springframework.web.servlet.DispatcherServlet.checkMultipart(DispatcherServlet.java:1178) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1012)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
javax.servlet.http.HttpServlet.service(HttpServlet.java:733) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:92)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 
org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:92)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
.....

贰、排查方向

通过请教大佬同事和查询网上资料,三个方向①minio上传出现问题②前端单次请求后端发送文件数量太多③前端多次请求后端发送文件数据很多

叁、场景复现

1、放单个大文件

#之前的后端配置
spring.servlet.multipart.max-file-size=30MB
spring.servlet.multipart.max-request-size=35MB

出现

the request was rejected because its size (168076944) exceeds the configured maximum (36700160)

排除这个问题引发文件EOF的问题

2、修改后端请求其他服务器时间

可能是spring tomcat 请求时间超时

#Ⅰ:修改后端配置 模拟文件上传远程minio
spring.servlet.multipart.max-file-size=2048MB
spring.servlet.multipart.max-request-size=2048MB
server.connectionTimeout =180000#Ⅱ:修改上传Minio接口
Thread.sleep(1700000);

由于前端超时设置为3分钟,所以决定后端线程睡2min50sec,再上传大文件,没问题
发现,不是后端请求minio服务器的文件上传出现问题

3、多次请求多个文件

前端请求23次uploadfile接口,没问题

4、单词请求多个文件

尝试了很多次文件排列,
最后前端更改请求超时时间为10秒,
调用一次uploadfile文件先放13个小文件(<100kb),7个中文件(≤ <10mb),3个大文件(≤ <200mb)
成功出现

2024-04-17 19:45:33.333 [http-nio-9091-exec-8] ERROR c.b.c.w.e.GlobalExceptionHandler - Failed to parse multipart servlet request; nested exception is java.io.IOException:

复现成功!

肆、解决方案

①防止流程出现其他错误,增大后端服务器接受前端文件的总大小

spring.servlet.multipart.max-file-size=200MB
spring.servlet.multipart.max-request-size=200MB

②修改前端一次请求等待时间延长到3分钟


感谢您阅读我的解决问题的博客!我希望这篇文章能为您提供有价值的见解,并帮助您解决面临的挑战。我非常欢迎您就我的方案提出任何意见、建议或纠正,因为您的反馈对我来说非常宝贵。

如果您发现任何错误或有任何疑问,请随时在评论区留言,我将非常乐意与您交流并改进我的观点。您的支持和鼓励是我不断前行的动力,希望您能继续关注我的博客,并与我分享您的想法。

谢谢您的阅读和支持!一起学习,一起成长!🌟

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/825601.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入探索:Facebook如何重塑社交互动

在当代社会中&#xff0c;社交互动已成为日常生活的核心组成部分。而在众多的社交媒体平台中&#xff0c;Facebook凭借其卓越的用户基础和创新的功能&#xff0c;已经成为了全球最大的社交媒体平台。本文将深入探讨Facebook如何通过其独特的特性和功能&#xff0c;重塑了人们的…

Springboot+Vue线上教学平台赠送配套文档1w字

SpringbootVue线上教学平台赠送配套文档1w字 项目描述 线上教学平台是一个功能丰富的在线教育工具&#xff0c;它为学生、教师和管理员提供了一个集成的学习、交流和管理环境。以下是关于该平台各项功能的简要介绍&#xff1a; 前台门户&#xff1a;前台门户是平台的门面&#…

实战|哈尔滨等保2.0 Linux主机测评过程之身份鉴别

一、身份鉴别 a)应对登录的用户进行身份标识和鉴别&#xff0c;身份标识具有唯一性&#xff0c;身份鉴别信息具有复杂度要求并定期更换。 输入 more /etc/shadow,得知系统所有用户&#xff0c;此语句字段格式有九段。 第一字段&#xff1a;用户名&#xff08;也被称为登录名…

jmeter-while控制器用法

condition中添加while结束循环的条件&#xff0c;以下语句的意思是&#xff0c;当percent等于100时&#xff0c;就跳出while循环继续执行 ${__javaScript("${percent}" ! 100)} 举例&#xff0c;以下方法是getPercent为一个引出的异步接口&#xff0c;该接口的返回包…

HiveSql中的函数家族(二)

一、窗口函数 1、什么是窗口函数 在 SQL 中&#xff0c;窗口函数&#xff08;Window Functions&#xff09;是一种特殊的函数&#xff0c;它允许在查询结果集的特定窗口&#xff08;通常是一组行&#xff09;上执行聚合、分析和计算操作&#xff0c;而无需聚合整个结果集。窗口…

FTP客户端Transmit 5 for Mac中文激活版

Transmit 5是一款功能强大的Mac FTP客户端软件&#xff0c;它由Panic公司开发&#xff0c;为用户提供简单、高效的文件传输体验。 Transmit 5 for Mac中文激活版下载 Transmit 5支持多种传输协议&#xff0c;如FTP、SFTP、WebDAV和Amazon S3等&#xff0c;满足用户不同的文件传…

【公司UI自动化学习】

公司课程链接&#xff1a;https://l.jd.com/student/project/project.du?project_id697509403 公司的课程&#xff0c;是给一个学习方向。 一、 PC自动化 1&#xff09;什么项目适合 2&#xff09;PC自动化介入时间点 3&#xff09;自动化率&#xff1a; 频繁改动的&…

不需要GPU就可以玩转模型,同时支持本地化部署

简单一款不需要GPU就可以在Win 机器跑的模型&#xff1a;Ollama&#xff1b;用于本地运行和部署大型语言模型&#xff08;LLMs&#xff09;的开源工具 关于Ollama的简要介绍 平台兼容性&#xff1a;Ollama支持多种操作系统&#xff0c;包括macOS、Linux和Windows&#xff0c;…

华为手机无法弹出wifi上网认证页面处理

华为手机无法弹出wifi上网认证页面 连wifi后跳到上图界面卡住&#xff0c;不跳转到单位的上网认证界面。 打开手机的设置应用&#xff0c;点击上面的WLAN选项。 点击上面的更多WLAN设置选项。 关闭WLAN安全检测就可以正常弹出上网认证界面&#xff0c; 正常弹出上网认证界面&a…

C++类和对象 中(六大默认成员函数)

前言 紧接着上一篇文章&#xff0c;接下来我们来认识下类的六大默认成员函数&#xff0c;如下图。之所以叫他默认成员函数&#xff0c;是因为即使我们不写&#xff0c;编译器会默认帮我们写&#xff0c;但只要我们自己显示的写了&#xff0c;编译器就不会帮我们生成对应的成员函…

第十五届蓝桥杯复盘python大学A组——试题C 数字诗意

思路 数字可以分为 有诗意的数字可以写成 (ij)(j-i1)/2 &#xff08; i、j都是正整数 &#xff09; ij 、j-i1 的奇偶性不同&#xff08;因为i、j都是正整数&#xff09; 因此&#xff0c; 如果一个数是奇数就一定有诗意 eg.312 ,523,734,945… 原因&#xff1a;根据上述分…

114 接口中幂等性的保证

前言 同样是 面试问题 如何确保接口的 幂等性 幂等是一个 较为抽象的概念, 多次重复访问, 不会导致业务逻辑的异常 这里从增删改查, 几个方面列一下 一般来说, 我们核心需要关注的就是 新增 和 更新 对于 增加元素, 首先针对唯一约束进行校验, 然后再处理新增的相关业…

Day09 React———— 第九天

ReactRoter 一个路径 path 对应一个组件 component 当我们在浏览器中访问一个 path 的时候&#xff0c;path 对应的组件会在页面中进行渲染 基础用法 import { createBrowserRouter, RouterProvider } from "react-router-dom"; const router createBrowserRoute…

AI讲师人工智能讲师大模型培训讲师叶梓:突破大型语言模型推理效率的创新方法

大型语言模型&#xff08;LLM&#xff09;在自然语言处理&#xff08;NLP&#xff09;任务中展现出了前所未有的能力&#xff0c;但它们对计算资源的巨大需求限制了其在资源受限环境中的应用。SparQ Attention算法提出了一种创新的方法&#xff0c;通过减少注意力机制中的内存带…

探索Java世界中的七大排序算法(上)

文章目录 排序的概念直接插入排序希尔排序( 缩小增量排序)选择排序堆排序冒泡排序 在计算机科学中&#xff0c;排序算法是一类重要的算法&#xff0c;它们用于将一组元素按照一定的顺序进行排列。在Java编程中&#xff0c;我们经常需要对数组或集合进行排序操作。本文将介绍Jav…

驱动云创建保存自己的环境

驱动云创建保存自己的环境 制作镜像方法一方法二报错 上一篇link介绍了如何在驱动云上部署llama2以及驱动云在训练大模型的方便之处。也说到了可以直接使用驱动云现有的环境&#xff0c;免得自己配置环境。 但是有的时候免不了自己想要安装一些包。 驱动云的环境是这样的&…

电视音频中应用的音频放大器

电视机声音的产生原理是将电视信号转化为声音&#xff0c;然后通过扬声器将声音播放出来。当我们打开电视并选择频道时&#xff0c;电视机首先从天线或有线电视信号中获取声音信号。声音信号经过放大器放大之后&#xff0c;就能够通过扬声器发出声音。电视机声音的产生原理和音…

react中子父组件互相传值

在react中父子组件互相传值&#xff0c;除了使用类似于redux这样状态管理的工具&#xff0c;怎么实现&#xff1f;&#xff1f; 父传子(简单)父:子: 子传父(较麻烦)父&#xff1a;子&#xff1a; 父传子(简单) 父: 子: 子传父(较麻烦) 父&#xff1a; 子&#xff1a;

elementui中文官网

Element - The worlds most popular Vue UI frameworkElement&#xff0c;一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库https://element.eleme.cn/#/zh-CN/

一个 .net 8 + Azure 登录 + Ant Design Blazor 的基本后台框架

一个 .net 8 Azure 登录 Ant Design Blazor 的基本后台框架 主界面使用了 Ant Design Blazor 项目模板搭建 后台技术是 .net 8 Blazor run at server 模式 登录方式使用 Azure 实现了菜单导航和路由 此外实现了读取和修改本地Json文件的功能&#xff0c;不是必须的&#x…