Tomcat 性能优化
一、 设置 tomcat 的 java 虚拟机参数 catalina.sh/bat
Windows 下修改 $tomcat$\ bin \ catalina. Bat:
set 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
参数解释:
-Xms:java Heap 初始大小。默认是物理内存的 1/64。
-Xmx:java heap 最大值。建议均设为物理内存的一半。不可超过物理内存。
–Xmn:年轻代大小。整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为 64m,年轻代大小 Sun
官方推荐配置为整个堆的 3/8。
-Xss:是指设定每个线程的堆栈大小。一般不易设置超过 1M,要不然容易出现 out ofmemory。
-XX:+AggressiveOpts:启用这个参数,则每当 JDK 版本升级时,你的 JVM 都会使用最新加入的优化技术(如果有的话)
-XX:+UseBiasedLocking:启用一个优化了的线程锁,使得你的 appserver 内对线程处理自动进行最优调配。
-XX:PermSize=128M:设置非堆内存(即永久保存区)初始值,默认是物理内存的 1/64;
-XX:MaxPermSize=256M:设置最大非堆内存的大小,默认是物理内存的 1/4。
-XX:+DisableExplicitGC:在程序代码中不允许有显示的调用”System.gc()”。
-XX:+UseParNewGC:对年轻代采用多线程并行回收,这样收得快。
-XX:+UseConcMarkSweepGC:即 CMS gc,jdk1.5 即后续版本才具有的功能,它使用的是 gc 估算触发和 heap 占用触发。使
用了 CMS GC 后可以在 GC 次数增多的情况下,每次 GC 的响应时间却很短。
-XX:MaxTenuringThreshold:设置垃圾最大年龄。如果设置为 0 的话,则年轻代对象不经过 Survivor 区,直接进入年老代。如
果将此值设置为一个较大值,则年轻代对象会在 Survivor 区进行多次复制,增加存活时间。
-XX:+CMSParallelRemarkEnabled:在使用 UseParNewGC 的情况下, 尽量减少 mark 的时间
-XX:+UseCMSCompactAtFullCollection:在使用 concurrent gc 的情况下, 防止 memoryfragmention, 对 live object 进行整理,
使 memory 碎片减少。
-XX:LargePageSizeInBytes:指定 Java heap 的分页页面大小
-XX:+UseFastAccessorMethods:get,set 方法转成本地代码
-XX:+UseCMSInitiatingOccupancyOnly:指示只有在 oldgeneration 在使用了初始化的比例后 concurrent collector 启动收集
-XX:CMSInitiatingOccupancyFraction=70:基本上满足(Xmx-Xmn)*(100- CMSInitiatingOccupancyFraction)/100>=Xmn 就不
会出现 promotion failed。
-Djava.awt.headless=true:避免在 winodws 开发环境下图片显示的好好可是在 linux/unix 下却显示不出来。
二、 设置 tomcat 服务器参数 server.xml 设置 socket、线程、压缩传输参数
修改 $tomcat$\ conf \ server. Xml:
<Connector port="8080" protocol="HTTP/1.1" acceptCount="100" maxThreads="500"