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
:元空间最大大小(Java 8+);-XX:+UseG1GC
:启用G1垃圾回收器(优化内存利用率)。可将内存参数添加到系统环境变量中,实现全局生效:
echo 'export JAVA_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC"' >> ~/.bashrc
source ~/.bashrc
这种方式适用于所有用户启动Tomcat的场景。
-Xms
:JVM初始堆内存大小(如-Xms512m
表示512MB),建议与-Xmx
设置为相同值,避免堆内存动态扩展带来的性能损耗;-Xmx
:JVM最大堆内存大小(如-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
,需优先检查堆内存或元空间是否不足,并适当调大对应参数。