1、异常现象
最近线上有个项目,运行一段时间后,莫名出幺蛾子了。导入数据到平台,一堆乱码的信息。开始还以为是服务器编码配置问题,然不是。 服务器重启,导入数据又正常了。出现了很多次了,运维同胞就开始抱怨了…
具体现象如下截图:

上述现象确实是有问题,通过系列翻阅信息,查看博客。
2、问题原因
在linux系统中,springboot应用服务再启动(java -jar 命令启动服务)的时候,会在操作系统的/tmp目录下生成一个tomcat*的文件目录,上传的文件先要转换成临时文件保存在这个文件夹下面。由于临时/tmp目录下的文件,在长时间(10天)没有使用的情况下,就会被系统机制自动删除掉。所以如果系统长时间没有使用到临时文件夹,就可能导致上面这个问题。
仔细查看日志,还会有如下提示:
The temporary upload location [/tmp/tomcat.7957874575370093230.8088/work/Tomcat/localhost/ROOT] is not valid
3、处理方案
3.1. 创建临时文件夹: 治标不治本,过一段时间可能又会出现此问题
$ mkdir -p /tmp/tomcat.7957874575370093230.8088/work/Tomcat/localhost/ROOT
3.2. application.yml 重新配置一个文件目录:用于存放上传文件, 然后重启项目
# 存放Tomcat的日志、Dump等文件的临时文件夹,默认为系统的tmp文件夹。事先在linux下创建好 /data/apps/temp 文件夹
server:
port: 8765
tomcat:
basedir: /data/apps/temp
3.3. 配置类配置临时文件存储目录
@Bean
MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
factory.setLocation(tmepPath);
return factory.createMultipartConfig();
}
本文主要探讨了一个SpringBoot应用在Linux环境中因临时目录(/tmp)导致的数据导入异常问题。当系统清理未使用的临时文件后,服务无法找到上传的文件,表现为乱码。解决方案包括创建自定义临时文件夹、在application.yml配置新的存储路径以及通过配置类设定临时文件存储目录。

21万+

被折叠的 条评论
为什么被折叠?



