天天看点

性能测试连载 (31)-tomcat 中间件调优指南

jvm调优

-server:tomcat以server模式运行时将拥有更大更高的并发处理能力,更快更强捷的JVM垃圾回收机制,可以获得更多的负载与吞吐量

-Xms–Xmx:把Xms与Xmx两个值设成一样是最优的做法

-Xss:设定线程的堆栈大小。一般不宜设置超过1M,否则容易出现out ofmemory

-XX:+AggressiveOpts:启用这个参数,则每当JDK版本升级时,你的JVM都会使用最新加入的优化技术

-XX:+UseBiasedLocking:启用一个优化了的线程锁。使得appserver内对线程处理自动进行最优调配

-XX:PermSize=128M-XX:MaxPermSize=256M:设置非堆内存初始值

-XX:+DisableExplicitGC:在程序代码中不允许调用System.gc()

-XX:+UseParNewGC:对年轻代采用多线程并行回收

-XX:+UseConcMarkSweepGC:使用cms GC回收器

-XX:MaxTenuringThreshold:设置年轻代gc最大年龄

-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启动收集

jvm调优示例

Linux下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 "
           
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
           

tomcat线程池调优

线程池调优示例

<connector port="8080" protocol="HTTP/1.1" <="" p="" style="word-wrap: break-word;">
URIEncoding="UTF-8"  minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true" connectionTimeout="20000"
acceptCount="300"  maxThreads="300" maxProcessors="1000" minProcessors="5"
useURIValidationHack="false"
compression="on" compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
redirectPort="8443"
/>