最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot項目長時間未訪問導(dǎo)致Tomcat臨時文件夾被刪除的解決方案

 更新時間:2026年02月04日 09:49:45   作者:qq_29757467  
做SpringBoot開發(fā)的同學(xué),大概率會遇到一個隱蔽的坑:項目部署在Linux服務(wù)器上,但如果系統(tǒng)長時間(比如10天)無人訪問,再次上傳文件就會報錯,排查半天找不到原因,其實這個問題的根源,和Tomcat的臨時文件夾密切相關(guān),今天就帶大家徹底搞懂這個問題,從原因到解決方案

引言

做SpringBoot開發(fā)的同學(xué),大概率會遇到一個隱蔽的坑:項目部署在Linux服務(wù)器上,通過java -jar啟動后,文件上傳功能一切正常,但如果系統(tǒng)長時間(比如10天)無人訪問,再次上傳文件就會報錯,排查半天找不到原因,最后重啟項目又神奇恢復(fù)了。

其實這個問題的根源,和Tomcat的臨時文件夾、Linux系統(tǒng)的臨時文件清理機(jī)制密切相關(guān)。今天就帶大家徹底搞懂這個問題,從原因到解決方案,一步到位,再也不用靠“重啟救急”。

一、問題復(fù)現(xiàn):隱蔽且易忽略

先明確問題場景,避免大家對號入座出錯:

  • 項目類型:SpringBoot打Jar包,通過 java -jar xxx.jar 方式啟動(非war包部署到獨立Tomcat);
  • 部署環(huán)境:Linux服務(wù)器(CentOS、Ubuntu等均會出現(xiàn));
  • 觸發(fā)條件:系統(tǒng)長時間無人訪問(通常10天左右),再次使用文件上傳功能時報錯;
  • 臨時解決:重啟SpringBoot項目,上傳功能恢復(fù)正常。

二、問題根源:兩步拆解,一看就懂

這個問題不是SpringBoot的bug,也不是Tomcat的問題,而是「Tomcat臨時文件存儲機(jī)制」和「Linux臨時文件清理機(jī)制」共同作用的結(jié)果,拆解成兩步就能明白:

1. Tomcat臨時文件夾的作用

當(dāng)我們用SpringBoot Jar包啟動項目時,SpringBoot會內(nèi)置一個Tomcat容器。當(dāng)項目中存在「文件上傳」功能時,上傳的文件并不會直接被處理,而是先轉(zhuǎn)換成臨時文件,存放在Tomcat的臨時文件夾中,處理完成后再刪除臨時文件(或保留,取決于業(yè)務(wù)邏輯)。

重點:SpringBoot內(nèi)置Tomcat,在Linux環(huán)境下,默認(rèn)的臨時文件夾路徑是 /tmp/ 目錄下(比如 /tmp/tomcat.xxxxxx.xxxx/ ),這個路徑是Tomcat自動生成的,無需手動配置。

2. Linux系統(tǒng)的臨時文件清理規(guī)則

Linux系統(tǒng)為了避免/tmp目錄占用過多磁盤空間,有一個默認(rèn)的臨時文件清理機(jī)制(由tmpwatch或systemd-tmpfiles服務(wù)管理),核心規(guī)則是:

「/tmp目錄下的文件/文件夾,如果連續(xù)10天沒有被訪問、修改,就會被系統(tǒng)自動刪除」。

3. 問題閉環(huán)

系統(tǒng)長時間無人訪問 → /tmp目錄下的Tomcat臨時文件夾10天未被 操作 → 被Linux系統(tǒng)自動刪除 → 再次上傳文件時,Tomcat無法找到臨時文件夾存放臨時文件 → 上傳失敗 → 重啟項目后,Tomcat重新生成臨時文件夾 → 功能恢復(fù)。

三、解決方案:兩種方式,按需選擇

針對這個問題,有兩種解決方案,一種是臨時救急,一種是徹底根治,大家可以根據(jù)自己的部署場景選擇。

方案1:臨時救急(快速恢復(fù),適合緊急情況)
最簡單、最快的方式,就是重啟SpringBoot項目。

重啟命令(根據(jù)自己的項目部署方式調(diào)整):

# 1. 查找項目進(jìn)程(假設(shè)項目Jar包名為xxx.jar)
ps -ef | grep xxx.jar
# 2. 殺死進(jìn)程(替換為查到的進(jìn)程ID)
kill -9 進(jìn)程ID
# 3. 重啟項目(后臺啟動,日志輸出到nohup.out)
nohup java -jar xxx.jar 

原理:重啟項目后,SpringBoot內(nèi)置的Tomcat會重新在/tmp目錄下生成臨時文件夾,恢復(fù)臨時文件存儲功能。
缺點:治標(biāo)不治本,下次系統(tǒng)長時間未訪問,問題還會重復(fù)出現(xiàn);如果項目有狀態(tài)(比如未持久化的會話),重啟會導(dǎo)致狀態(tài)丟失。

方案2:徹底根治(推薦,一勞永逸)
核心思路:修改Tomcat的臨時文件夾路徑,將臨時文件夾從Linux的/tmp目錄(會被自動清理),遷移到自定義目錄(不會被系統(tǒng)自動清理)。

具體操作:在SpringBoot的配置文件(application.yml 或 application.properties)中,配置Tomcat的basedir屬性,指定自定義臨時目錄。

重點:yml配置示例(直接復(fù)制可用,適配大部分場景)

# 開發(fā)/生產(chǎn)環(huán)境通用配置
server:
  # 服務(wù)器HTTP端口(根據(jù)自己的需求調(diào)整)
  port: 6116
  servlet:
    # 應(yīng)用訪問路徑(默認(rèn)/,無需修改)
    context-path: /
  tomcat:
    # Tomcat URI編碼(避免中文亂碼,必配)
    uri-encoding: UTF-8
    # Tomcat最大線程數(shù)(根據(jù)服務(wù)器配置調(diào)整,默認(rèn)200)
    max-threads: 800
    # Tomcat初始化線程數(shù)(默認(rèn)25,優(yōu)化后提升啟動速度)
    min-spare-threads: 30
    # 關(guān)鍵配置:自定義Tomcat臨時文件夾路徑(避免被Linux清理)
    # 注意:Linux環(huán)境請配置絕對路徑,比如 /home/tomcat/tmp
    # Windows環(huán)境可配置 D:\\tmp(雙反斜杠轉(zhuǎn)義)
    # 此處為  linux環(huán)境可配置
    basedir: /home/tomcat/tmp

配置說明(避坑重點)

  • 路徑格式:Linux環(huán)境必須配置絕對路徑(比如 /home/tomcat/tmp),Windows環(huán)境用雙反斜杠(D:\tmp),避免路徑解析錯誤;
  • 權(quán)限問題:自定義目錄(比如 /home/tomcat/tmp)需要給啟動項目的用戶(比如java用戶)賦予讀寫權(quán)限,否則Tomcat無法創(chuàng)建臨時文件,會報錯;
  • 無需手動創(chuàng)建目錄:配置完成后,重啟項目,Tomcat會自動創(chuàng)建該目錄,無需手動mkdir;
  • 兼容所有SpringBoot版本:不管是2.x還是3.x版本,這個配置都適用,無需修改其他參數(shù)。

權(quán)限配置命令(Linux環(huán)境必看)
如果配置后報錯“權(quán)限不足”,執(zhí)行以下命令賦予權(quán)限(替換目錄路徑和用戶名):

# 1. 創(chuàng)建自定義臨時目錄(如果Tomcat未自動創(chuàng)建)
mkdir -p /home/tomcat/tmp
# 2. 賦予權(quán)限(假設(shè)啟動用戶是java,替換為自己的用戶)
chown -R java:java /home/tomcat/tmp
# 3. 賦予讀寫執(zhí)行權(quán)限
chmod -R 755 /home/tomcat/tmp

四、補充注意事項(避坑必看)

  1. 不要將臨時目錄配置在/tmp、/var/tmp等系統(tǒng)默認(rèn)臨時目錄下,這些目錄都會被系統(tǒng)定期清理;
  2. 自定義臨時目錄無需擔(dān)心磁盤占用:Tomcat會自動清理過期的臨時文件(比如上傳完成后的臨時文件),無需手動刪除;
  3. 如果項目部署在Docker容器中,除了配置basedir,還需要將自定義臨時目錄掛載到宿主機(jī),避免容器重啟后臨時文件丟失;
  4. 排查技巧:如果不確定臨時文件夾是否被刪除,可以通過 ls /tmp | grep tomcat 命令查看,若沒有相關(guān)文件夾,說明已被系統(tǒng)清理。

五、總結(jié)

SpringBoot項目長時間未訪問,Tomcat臨時文件夾被刪除的問題,本質(zhì)是「系統(tǒng)清理機(jī)制」和「Tomcat默認(rèn)配置」的沖突。

緊急情況用「重啟項目」快速恢復(fù),生產(chǎn)環(huán)境推薦用「配置Tomcat自定義臨時目錄」徹底根治,配置簡單、一勞永逸,還能避免后續(xù)重復(fù)踩坑。

如果大家在配置過程中遇到權(quán)限報錯、路徑解析錯誤等問題,可以在評論區(qū)留言,我會及時回復(fù)排查思路~

以上就是SpringBoot項目長時間未訪問導(dǎo)致Tomcat臨時文件夾被刪除的解決方案的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot項目未訪問導(dǎo)致Tomcat被刪除的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

金乡县| 百色市| 哈尔滨市| 绵阳市| 齐齐哈尔市| 集安市| 丰顺县| 吉木萨尔县| 襄城县| 盘锦市| 新民市| 旬邑县| 兴义市| 获嘉县| 康定县| 云梦县| 丽江市| 赤壁市| 余干县| 滦平县| 卢龙县| 宣汉县| 青铜峡市| 新民市| 青冈县| 浦城县| 峨眉山市| 海城市| 黄大仙区| 洪湖市| 会宁县| 子洲县| 新丰县| 乐山市| 留坝县| 舟曲县| 定南县| 长沙市| 米林县| 台前县| 秭归县|