CentOS中Tomcat内存配置技巧
Tomcat的内存配置主要通过修改启动脚本catalina.sh(位于$TOMCAT_HOME/bin/目录)实现,核心参数包括:
-Xms512m表示初始堆为512MB),建议与最大堆内存(-Xmx)一致,避免频繁扩容导致的性能波动。-Xmx2048m表示最大堆为2GB),通常不超过服务器物理内存的80%(如16GB物理内存可设置12GB以内),防止内存溢出。-XX:MaxPermSize,设置元空间最大大小(如-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。-XX:NewSize=512m -XX:MaxNewSize=1024m),适合需要频繁创建对象的场景(如电商秒杀)。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(等待队列长度)等参数,配合内存配置优化整体性能。