一. jvm参数调优
常见的生产环境tomcat启动脚本里常见如下的参数,我们依次来解释各个参数意义.
export JAVA_OPTS="-server -Xms1400M -Xmx1400M -Xss512k -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:PermSize=128M -XX:MaxPermSize=256M -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=31 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true "
-server
如果tomcat是运行在生产环境中的,这个参数必须加上,-server参数可以使tomcat以server模式运行,这个模式下将拥有:更大、更高的并发处理能力,更快更强捷的JVM垃圾回收机 制,可以有更大的负载与吞吐量
-Xms<size>和-Xmx<size>
前者表示JVM初始化堆的大小,后者表示JVM堆的最大值。一般认为把Xms与Xmx两个值设成一样是最优的做法,否则会导致jvm有较为频繁的GC,影响系统性能。因此一开始我们就把这两个设成一样,使得Tomcat在启动时就为最大化参数充分利用系统的效率。 如何确定当前OS jvm最大可用内存呢?在命令行下执行
java -Xmx2048 -version
命令,如果提示下图的信息,则证明当前内存数可以用
如果提示下面的错误,则当前数值不可用.
-Xss
设定每个线程的堆栈大小。依据具体应用,看一个线程大约占用多少内存、有多少线程同时运行等。一般不宜设置超过1M,要不然容易出现out ofmemory
–Xmn
设置年轻代大小为512m。整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun 官方推荐配置为整个堆的3/8。
-XX:+AggressiveOpts
启用这个参数,