Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Tomcat 內存參數調優:Linux/Windows 環境完整配置指南

編輯:Linux 教學

Tomcat 預設堆內存較小(通常 256MB),生產環境必須根據業務調整 -Xms、-Xmx、-XX:MaxPermSize(JDK 7)或 -XX:MaxMetaspaceSize(JDK 8+)。本文提供 Linux 與 Windows 雙平台配置方法。

核心 JVM 參數

參數含義建議值
-Xms初始堆大小設為 -Xmx 同值,避免動態擴縮開銷
-Xmx最大堆大小物理內存 60-70%,預留給 OS、Metaspace、線程棧、Direct Memory
-XX:MaxPermSize永久代大小 (JDK 7)128M-256M,視類加載量而定
-XX:MaxMetaspaceSize元空間大小 (JDK 8+)256M-512M,默認無上限建議設置
-Xss線程棧大小256K-512K,高併發可調小

Linux 環境配置

方法 1:catalina.sh 中設置 JAVA_OPTS(推薦)


# 編輯 $CATALINA_HOME/bin/catalina.sh
# 在開頭添加(約第 100 行前)
export JAVA_OPTS="-Xms2g -Xmx2g -XX:MaxMetaspaceSize=512m -Xss256k"

方法 2:setenv.sh(最佳實踐,不侵入原文件)


# 創建 $CATALINA_HOME/bin/setenv.sh
#!/bin/bash
export JAVA_OPTS="-Xms2g -Xmx2g -XX:MaxMetaspaceSize=512m -Xss256k \
-XX:+UseG1GC -XX:MaxGCPauseMillis=200 \
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/tomcat/logs/heapdump.hprof"

chmod +x setenv.sh

Tomcat 啟動時自動讀取 setenv.sh,升級覆蓋 catalina.sh 不會丟失配置。

方法 3:系統服務環境變量


# systemd 服務文件 /etc/systemd/system/tomcat.service
[Service]
Environment="JAVA_OPTS=-Xms2g -Xmx2g -XX:MaxMetaspaceSize=512m"

Windows 環境配置

方法 1:catalina.bat 直接修改


rem 在 catalina.bat 開頭添加
set JAVA_OPTS=-Xms2g -Xmx2g -XX:MaxMetaspaceSize=512m -Xss256k

方法 2:setenv.bat(推薦)


rem 創建 %CATALINA_HOME%\bin\setenv.bat
set JAVA_OPTS=-Xms2g -Xmx2g -XX:MaxMetaspaceSize=512m -Xss256k ^
-XX:+UseG1GC -XX:MaxGCPauseMillis=200 ^
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=%CATALINA_HOME%\logs\heapdump.hprof

方法 3:Windows 服務註冊表/命令行


# 使用 Tomcat 服務管理器 (tomcat9w.exe) → Java 選項卡 → Java Options
# 或命令行註冊服務時指定
service.bat install Tomcat9 --JvmOptions "-Xms2g;-Xmx2g;-XX:MaxMetaspaceSize=512m"

驗證配置生效


# 查看進程參數
ps -ef | grep tomcat
# 或
jcmd  VM.flags
# 或
jmap -heap 

常見誤區

  • 設 -Xmx 過大:導致 OS Swap,GC 停頓劇增。預留 1-2GB 給非堆
  • 忽略 Metaspace:類加載多(Spring、動態代理)易 OOM,必須限制
  • 混用 JAVA_OPTS / CATALINA_OPTS:CATALINA_OPTS 僅用於 start/run,JAVA_OPTS 影響所有命令(含 shutdown),推薦統一 JAVA_OPTS
  • 未啟用 GC 日誌:生產必開 -Xlog:gc*:file=/path/gc.log:time,uptime,level,tags (JDK 9+) 或 -XX:+PrintGCDetails -Xloggc:/path/gc.log (JDK 8)

總結

Linux 用 setenv.sh,Windows 用 setenv.bat。核心原則:-Xms=-Xmx、限制 Metaspace、啟用 GC 日誌、預留非堆內存。配置變更後重啟 Tomcat 生效。

Copyright © Windows教程網 All Rights Reserved