1. 起因 

             公司研发人员 部署服务在阿里云 ecs 服务器; 上传文件过1周左右文件自动丢失;

  2. 排查思路:

        (1).查询tomcat 启动日志出现如下信息:

              java.io.IOException: The temporary upload location [/tmp/tomcat.1593253653386650830.8220/work/Tomcat/localhost/ROOT] is not valid

       (2).这个目录在Linux系统中默认建在/tmp目录下, 10天就会被清除, 引发上述异常.  

     (3).man systemd-tmpfiles

     

  Tomcat-上传文件路径填坑

  

(3).由此可确定服务为凶手;就是说/tmp 目录下除了下面排除的文件,都给删了。擦~


  1.    

        系统环境:

                       Centos-7.2

           内核版本: 

                       2.6.32-696.3.2.el6.x86_64

           容器:

                         Tomcat 8.5.15.tar.gz    

         


2.tomcat 服务层解决办法;


JVM_OPTIONS="-Xrs -Xms256m -Xmx512m -Djava.io.tmpdir=/data/app/upload"   ####tomcat bin catalina.sh 文件修改##


3.程序框架解决办法:


框架配置文件新增: application.properties     ####sprint-boot 框架配置文件#######

server.tomcat.basedir=/data/app/upload

4.系统解决方案;

解决方案在 /usr/lib/tmpfiles.d/ 新建文件把指定目录添加上并规定不让被清除
[email protected]~:# vi /usr/lib/tmpfiles.d/tomcat.conf
d /tmp/tomcat* 0755 root root -           
d /tmp/upload  0755 root root -             ##tomcat 程序上传目录文件


OK,重启 systemctl restart systemd-tmpfiles-clean  服务;