CentOS下Tomcat内存配置技巧
Tomcat的内存配置主要通过JVM参数实现,关键参数包括:
-Xms512m表示初始分配512MB),建议与-Xmx设为相同值,避免堆内存频繁扩容导致的性能波动。-Xmx2048m表示最大允许使用2GB),通常不超过服务器物理内存的80%(如16GB物理内存可设为12-14GB),防止内存溢出影响系统稳定性。-XX:MaxPermSize),默认无限制,建议根据应用类加载需求设置(如-XX:MaxMetaspaceSize=512m),避免元空间溢出。-XX:NewSize=512m -XX:MaxNewSize=1024m),年轻代用于存放新创建的对象,合理设置可优化Minor GC频率。catalina.sh脚本配置(推荐)catalina.sh是Tomcat的启动脚本,修改其中的JAVA_OPTS变量可直接影响JVM内存分配。
/usr/share/tomcat*/bin/或/opt/tomcat/bin/(根据实际安装路径调整)。sudo vi /usr/share/tomcat*/bin/catalina.sh命令打开文件。#!/bin/bash之后)添加以下内容(以Java 8+为例):JAVA_OPTS="$JAVA_OPTS -Xms1024m -Xmx2048m -XX:MaxMetaspaceSize=512m -XX:+UseG1GC"
其中-XX:+UseG1GC启用G1垃圾回收器(适用于大内存场景,提升GC效率)。Esc键输入:wq保存文件。sudo systemctl restart tomcat使配置生效。若Tomcat通过系统服务(如systemd)管理,也可通过修改环境配置文件设置内存参数。
sudo vi /etc/sysconfig/tomcat(部分系统可能为/etc/default/tomcat)。JAVA_OPTS:在文件中添加以下内容:JAVA_OPTS="-Xms1024m -Xmx2048m -XX:MaxMetaspaceSize=512m"
sudo systemctl restart tomcat生效。JAVA_OPTS="$JAVA_OPTS -Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m"
-XX:MaxMetaspaceSize替代,且元空间默认无大小限制(建议设置上限以避免内存泄漏)。-Xms512m -Xmx1024m;-Xms1024m -Xmx2048m;-Xms2048m -Xmx4096m(不超过物理内存80%)。-XX:+UseG1GC;-XX:+UseConcMarkSweepGC启用,但需注意停顿时间。jstat监控GC情况:jstat -gcutil <Tomcat_PID> 1000(每秒输出一次GC统计信息);jmap生成堆转储文件分析内存泄漏:jmap -dump:live,format=b,file=heapdump.hprof <Tomcat_PID>;top/htop查看系统内存占用,确保Tomcat未过度消耗资源。-Xms和-Xmx设为相同值,减少JVM启动时堆内存的动态调整,提升性能。OutOfMemoryError,需排查代码中的内存泄漏(如大量缓存未清理、静态集合持有对象引用等)。