Tomcat在Debian上的內存設置說明
Tomcat在Debian系統上的默認內存配置通常由JVM自身決定:初始堆內存(-Xms
)約為物理內存的1/64,最大堆內存(-Xmx
)約為物理內存的1/4。例如,若服務器有8GB物理內存,默認-Xms
約為128MB,-Xmx
約為2GB。但這種默認配置可能無法滿足生產環境需求,需根據應用實際情況調整。
catalina.sh
腳本(通用方法)Debian系統中,Tomcat的啟動腳本catalina.sh
(位于/opt/tomcat/bin/
或/usr/share/tomcat*/bin/
目錄下)是配置內存的核心文件。操作步驟如下:
vim
、nano
)打開catalina.sh
;-Xms512m
初始堆、-Xmx1024m
最大堆為例):export JAVA_OPTS="-Xms512m -Xmx1024m"
若需兼容舊版Java(8及之前),可添加永久代參數:export JAVA_OPTS="$JAVA_OPTS -XX:PermSize=64m -XX:MaxPermSize=256m"
若使用Java 11及以上版本(元空間取代永久代),則替換為:export JAVA_OPTS="$JAVA_OPTS -XX:MaxMetaspaceSize=256m"
sudo systemctl restart tomcat
setenv.sh
腳本(推薦方法)為避免直接修改catalina.sh
,可在Tomcat的bin
目錄下創建setenv.sh
文件(若不存在則新建),并添加內存參數:
sudo touch /opt/tomcat/bin/setenv.sh
sudo chmod +x /opt/tomcat/bin/setenv.sh
編輯setenv.sh
,內容如下:
#!/bin/bash
export JAVA_OPTS="-Xms1024m -Xmx2048m -XX:MaxMetaspaceSize=512m -XX:+UseG1GC"
其中:
-Xms1024m
:初始堆內存1GB;-Xmx2048m
:最大堆內存2GB;-XX:MaxMetaspaceSize=512m
:元空間最大大?。↗ava 8+);-XX:+UseG1GC
:啟用G1垃圾回收器(優化內存利用率)。可將內存參數添加到系統環境變量中,實現全局生效:
echo 'export JAVA_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC"' >> ~/.bashrc
source ~/.bashrc
這種方式適用于所有用戶啟動Tomcat的場景。
-Xms
:JVM初始堆內存大?。ㄈ?code>-Xms512m表示512MB),建議與-Xmx
設置為相同值,避免堆內存動態擴展帶來的性能損耗;-Xmx
:JVM最大堆內存大?。ㄈ?code>-Xmx1024m表示1GB),不應超過物理內存的80%(如8GB物理內存建議不超過6GB),防止內存溢出導致系統崩潰;-XX:PermSize
/-XX:MaxPermSize
:舊版Java(8及之前)的永久代大小,用于存儲類元數據,Java 8后已被元空間取代;-XX:MaxMetaspaceSize
:Java 8+的元空間最大大小,替代永久代,避免元空間無限增長;-XX:+UseG1GC
:啟用G1垃圾回收器(Java 9+默認),提升大內存場景下的垃圾回收效率。修改配置后,可通過以下命令檢查Tomcat進程的內存參數:
ps -ef | grep tomcat
輸出中應包含類似以下內容(以-Xms512m -Xmx1024m
為例):
tomcat 1234 0.0 1.2 512000 123456 ? S 12:34 0:00 /usr/bin/java -Xms512m -Xmx1024m -XX:MaxMetaspaceSize=256m -jar /opt/tomcat/lib/tomcat-juli.jar
-Xmx
);-Xloggc:/var/log/tomcat/gc.log
),定期分析內存使用情況;OutOfMemoryError
,需優先檢查堆內存或元空間是否不足,并適當調大對應參數。