詳解SpringBoot中的tomcat優化和修改

2022-09-26 17:18:11 字數 4363 閱讀 2999

專案背景

在做專案的時候,把springboot的專案打包成安裝包了,在客戶上面安裝執行,一切都是那麼的完美,可是發生了意外程式設計客棧,對方突然說匯出匯入的檔案都不行了。我急急忙忙的檢視日誌,發現報了乙個錯誤

at org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfil程式設計客棧3)

經過分析發現,這是tomcat在啟動的時候會生成乙個臨時的上傳檔案儲存的位置,但是這個位子預設是放在系統的臨時資料夾中。當這個tomcat建立的資料夾被系統刪除後,這時在上傳檔案就出現問題了。可能對方伺服器裝上了360管家,會自動刪掉好似

開工針對這乙個異常有以下解決方法

1.萬能的重啟,絕大多數的問題解決方法,「你重啟一下試試」。但是這個方法只能解決得了一時,解決不了一世啊。

2.在配置檔案中加上

server.tomcat.basedir=自定義目錄

3.啟動jar包的時候加上引數 -dj**a.io.tmpdir=自定義目錄

j**a -jar xx.jar -dj**a.io.tmpdir=自定義目錄

4.新增配置bean

import org.springframework.boot.web.servlet.multipartconfigfactory;

import org.springframework.context.annotation.bean;

import org.springframework.context.annotation.configuration;

import j**ax.servlet.multipartconfigelement;

@configuration

public class tomcatbeanconfig

}-------------------------------------分隔符 ------------------------------------------

接著說優化,至於優化,我在解決上面的問題發現,tomcat中有乙個配置

# 後台執行緒方法的delay大小每隔900s清除過期的session會話

server.tomcat.background-processor-delay=900

預設值是10, 每隔10s發生一次young gc,並且cpu使用率長期大於10%。

con程式設計客棧tainerbackgroundprocessor這個執行緒是幹什麼的?

tomcat的engine會啟動乙個執行緒(就是containerbackgroundprocessor),該執行緒每10s會傳送乙個傳送乙個事件,監聽到該事件的部署配置類會自動去掃瞄webapp資料夾下的war包,將其載入成乙個context,即啟動乙個web服務。同時,該執行緒還會呼叫子容器engine、host、context、wrapper各容器元件及與它們相關的其它元件的backgroundprocess方法。

個人理解是,每隔10s對session的過期清理過於頻繁從而導致cpu佔用率過高,

我改成了900,就是每900秒檢測一次,這樣就降低cpu佔用率啦

backgroundprocess對spring mvc的影響

主要影響session的過期清理,如果設定為900,

就只會每隔900s清除過期的session會話。

server.tomcat.background-processor-delay = 900s

#呼叫backgroundprocess方法之間的延遲。如果未指定持續時間字尾,則將使用秒。

springboot註解詳解

標註註解 restcontroller 標示當前類是乙個控制類,是springboot提供的基於restfull風格開發,該註解是乙個組合註解,由 controller和 responsebody構成,如果當前類標示restcontroller,則在返回資料是以json格式返回。postconstr...

Springboot 啟動詳解

最近一直在看springboot和springcloud 看了將近20多天,對這兩個系統的認知總算是入了門。後續應該會有乙個系列的文章,本文就先從springboot的啟動入手.上面的 是springboot的入口,現在從run方法進去 點選進來後到了這裡就會分成兩步 2.呼叫生成的物件的run方法...

詳解Spring Boot中初始化資源的幾種方式

假設有這麼乙個需求,要求在專案啟動過程中,完成執行緒池的初始化,加密證書載入等功能,你會怎麼做?如果沒想好答案,請接著往下看。今天介紹幾種在spring boot中進行資源初始化的方式,幫助大家解決和回答這個問題。commandlinerunner 示例 如下 component public cl...