大型系统采用Tomcat默认设置是无法满足生产环境对性能的需求,现在给出Tomcat jvm参数优化参考配置
linux版本
4核及以上
JAVA_OPTS="-Xms8912m -Xmx8912m -XX:PermSize=200M -XX:MaxPermSize=1024M -XX:MaxDirectMemorySize=1024M -XX:SurvivorRatio=6 -XX:NewRatio=4 -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:PretenureSizeThreshold=5242880 -XX:MaxTenuringThreshold=50 -XX:CMSInitiatingOccupancyFraction=80 -XX:CMSFullGCsBeforeCompaction=5 -XX:+UseTLAB"
4核以下
JAVA_OPTS="-Xms8912m -Xmx8912m -XX:PermSize=200M -XX:MaxPermSize=1024M -XX:MaxDirectMemorySize=1024M -XX:SurvivorRatio=6 -XX:NewRatio=4 -XX:+DisableExplicitGC -XX:PretenureSizeThreshold=5242880 -XX:MaxTenuringThreshold=50 -XX:+UseTLAB"
Windows版本
4核及以上
set JAVA_OPTS=-Xms8912m -Xmx8912m -XX:PermSize=200M -XX:MaxPermSize=1024M -XX:MaxDirectMemorySize=1024M -XX:SurvivorRatio=6 -XX:NewRatio=4 -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:PretenureSizeThreshold=5242880 -XX:MaxTenuringThreshold=50 -XX:CMSInitiatingOccupancyFraction=80 -XX:CMSFullGCsBeforeCompaction=5 -XX:+UseTLAB
4核以下
set JAVA_OPTS=-Xms8912m -Xmx8912m -XX:PermSize=200M -XX:MaxPermSize=1024M -XX:MaxDirectMemorySize=1024M -XX:SurvivorRatio=6 -XX:NewRatio=4 -XX:+DisableExplicitGC -XX:PretenureSizeThreshold=5242880 -XX:MaxTenuringThreshold=50 -XX:+UseTLAB
将以上脚本写入tomcat安装目录\bin\catalina.sh或catalina.bat中的有效脚本第一行。
参数说明:
Xms:堆初始内存大小
Xmx:堆最大内存大小
XX:PermSize方法区初始内存大小
XX:MaxPermSize方法区最大内存大小
XX:MaxDirectMemorySize虚拟机可以使用本地内存大小
内存分配规则:
1.堆初始内存和堆最大内存一样大。
2.方法区初始内存不小于200M,方法区最大内存不大于1G。
3.服务器内存分配比例
如果Tomcat和数据库安装在同一台服务器上,堆、虚拟机可以使用本地内存、本地内存、数据库比例为5:1:2:2。以16G内存为例,堆8G(方法区最大1G,初始200M)、虚拟机可以使用本地内存1.6G、本地内存3.2G、数据库3.2G,剩余内存可以分配给堆和数据库。
如果Tomcat单独安装在同一台服务器上,堆、虚拟机可以使用本地内存、本地内存比例为6:1:3。以16G内存为例,堆9G(方法区最大1G,初始200M)、虚拟机可以使用本地内存1.6G、本地内存4.8G,剩余内存可以分配给堆。
以上规则可以根据实际情况做调整。
该配置方案需要运行在至少4核CPU(最好16核CPU)的服务器上、jdk1.6u40以后版本。