springboot /tmp 臨時(shí)目錄的具體實(shí)現(xiàn)
1.生成機(jī)制
在linux系統(tǒng)中,springboot應(yīng)用服務(wù)再啟動(dòng)(java -jar 命令啟動(dòng)服務(wù))的時(shí)候,會(huì)在操作系統(tǒng)的/tmp目錄下生成一個(gè)tomcat*的文件目錄,上傳的文件先要轉(zhuǎn)換成臨時(shí)文件保存在這個(gè)文件夾下面。
因?yàn)榱魅∫淮蜗M(fèi)之后,后面無(wú)法再?gòu)牧髦蝎@取數(shù)據(jù),所以緩存方便后續(xù)復(fù)用;
2.產(chǎn)生異常
上線后可能tomcat臨時(shí)文件夾會(huì)被Linux刪除,會(huì)報(bào)找不到錯(cuò)誤,現(xiàn)在趕緊記錄一下,已被不時(shí)之需
cat /usr/lib/tmpfiles.d/tmp.conf # This file is part of systemd. # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # See tmpfiles.d(5) for details # Clear tmp directories separately, to make them easier to override v /tmp 1777 root root 10d v /var/tmp 1777 root root 30d # Exclude namespace mountpoints created with PrivateTmp=yes x /tmp/systemd-private-%b-* X /tmp/systemd-private-%b-*/tmp x /var/tmp/systemd-private-%b-* X /var/tmp/systemd-private-%b-*/tmp
3.解決辦法
3.1 重啟大法
既然目錄被刪除了,重啟一下服務(wù),讓系統(tǒng)重新生成該目錄,臨時(shí)解決(但是以后目錄還可能被刪除)
3.1 從Linux層面修改 /tmp目錄的清理策略
配置一下不刪除tmp目錄下的tomcat
vim /usr/lib/tmpfiles.d/tmp.conf # 添加下面一行 x /tmp/tomcat.* # 重啟服務(wù) systemctl restart systemd-tmpfiles-clean
3.2 增加JVM配置
#定臨時(shí)目錄為/app/xxx/tmp -Djava.io.tmpdir=/app/xxx/tmp(自定義路徑)
3.3 增加JVM配置
-java.tmp.dir=/data/upload_tmp
3.4 添加spring boot配置
spring:
http:
multipart:
location: /data/upload_tmp
3.5 使用配置類配置
在Spring容器中注冊(cè)MultipartConfigElement對(duì)象,通過(guò)MultipartConfigFactory指定路徑,路徑不存在的話就創(chuàng)建
@Bean
public MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
String location = System.getProperty("user.dir")+"/data/tmp";
File tmpFile = new File(location);
if (!tmpFile.exists()){
tmpFile.mkdirs();
}
factory.setLocation(location);
return factory.createMultipartConfig();
}到此這篇關(guān)于springboot /tmp 臨時(shí)目錄的具體實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)springboot /tmp 臨時(shí)目錄內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java工作中常見(jiàn)的并發(fā)問(wèn)題處理方法總結(jié)
這篇文章主要介紹了Java工作中常見(jiàn)的并發(fā)問(wèn)題處理方法總結(jié),文章內(nèi)容講解的很清晰,有不太懂得同學(xué)可以跟著學(xué)習(xí)下2021-02-02
java 最新Xss攻擊與防護(hù)(全方位360°詳解)
這篇文章主要介紹了java 最新Xss攻擊與防護(hù)(全方位360°詳解),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
Idea2024創(chuàng)建Maven項(xiàng)目沒(méi)有src文件夾的解決步驟
本文主要介紹了Idea2024創(chuàng)建Maven項(xiàng)目沒(méi)有src文件夾,文中通過(guò)圖文示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02
Java多線程讀寫鎖ReentrantReadWriteLock類詳解
本文詳細(xì)講解了Java多線程讀寫鎖ReentrantReadWriteLock類,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-12-12
SpringBoot Session接口驗(yàn)證實(shí)現(xiàn)流程詳解
這篇文章主要介紹了SpringBoot+Session實(shí)現(xiàn)接口驗(yàn)證(過(guò)濾器+攔截器)文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-09-09
springboot 定時(shí)任務(wù)@Scheduled實(shí)現(xiàn)解析
這篇文章主要介紹了springboot 定時(shí)任務(wù)@Scheduled實(shí)現(xiàn)解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
Java調(diào)用通義千問(wèn)API的詳細(xì)步驟
這篇文章主要介紹了在Java中接入通義千問(wèn)API的步驟,包括獲取APIKey、添加依賴、配置模型和流式響應(yīng)等,并提供了響應(yīng)處理和高級(jí)功能實(shí)現(xiàn)示例,以及常見(jiàn)問(wèn)題解決方案,需要的朋友可以參考下2026-03-03
基于SpringBoot從零構(gòu)建生產(chǎn)級(jí)OOM監(jiān)測(cè)預(yù)警系統(tǒng)
OOM是Java應(yīng)用在生產(chǎn)環(huán)境中最致命的殺手之一,一次未及時(shí)發(fā)現(xiàn)的內(nèi)存泄漏,足以讓整個(gè)服務(wù)集群在數(shù)分鐘內(nèi)崩潰,造成不可估量的業(yè)務(wù)損失,本文將從技術(shù)原理到工程實(shí)踐,帶你構(gòu)建一套完整的Spring Boot OOM監(jiān)測(cè)預(yù)警系統(tǒng),需要的朋友可以參考下2026-03-03

