CentOS中Tomcat內存配置技巧
Tomcat的內存配置主要通過修改啟動腳本catalina.sh
(位于$TOMCAT_HOME/bin/
目錄)實現,核心參數包括:
-XX:MaxPermSize
,設置元空間最大大?。ㄈ?code>-XX:MaxMetaspaceSize=256m),避免元空間溢出(常見錯誤:java.lang.OutOfMemoryError: Metaspace
)。JAVA_OPTS="$JAVA_OPTS -Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m"
JAVA_OPTS="$JAVA_OPTS -Xms512m -Xmx1024m -XX:MaxMetaspaceSize=256m"
選擇合適的垃圾回收器可提升內存回收效率,常見配置:
-XX:+UseG1GC
啟用,示例如下:JAVA_OPTS="$JAVA_OPTS -Xms1024m -Xmx2048m -XX:+UseG1GC"
-XX:+UseParallelGC
啟用(年輕代使用并行收集,老年代使用串行收集),示例如下:JAVA_OPTS="$JAVA_OPTS -Xms1024m -Xmx2048m -XX:+UseParallelGC"
-XX:NewRatio=2
表示新生代占堆的1/3,老年代占2/3),默認值為2。catalina.sh
后,保存文件。systemctl restart tomcat
(CentOS 7+)或service tomcat restart
(CentOS 6)重啟服務,使配置生效。ps aux | grep tomcat
:查找Tomcat進程ID(PID)。jmap -heap <PID>
:查看堆內存詳細信息(如初始堆、最大堆、新生代大?。?。jcmd <PID> VM.flags
:查看所有JVM參數(包括內存設置)。top
、htop
命令查看Tomcat進程的內存占用(RES
列表示實際使用內存),判斷是否接近最大堆限制。jstat -gcutil <PID> 1000
(每秒輸出一次GC情況)監控GC頻率和耗時,若Full GC頻繁(如每分鐘超過1次),需擴大堆內存或優化GC策略。maxThreads
(最大線程數)、acceptCount
(等待隊列長度)等參數,配合內存配置優化整體性能。