tomcat性能优化设置

       tomcat的优化策略有2处,1是JVM内存的优化,2是线程并发量的优化。

       JVM内存的优化在bin目录的catalina.sh,在"OS"下增加:

set JAVA_OPTS=-server -Xms1300M -Xmx1300M -Xss256k -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是运行在生产环境中

因为tomcat默认是以一种叫java –client的模式来运行的,server即意味着你的tomcat是以真实的production的模式在运行的,这也就意味着tomcat以server模式运行时将拥有:更大、更高的并发处理能力,更快更强捷的JVM垃圾回收机制,可以获得更多的负载与吞吐量。

 -Xms –Xmx

即JVM内存设置了,Xms是堆最小内存,Xmx是堆最大内存,把Xms与Xmx两个值设成一样是最优的做法,这样可以减少每次垃圾回收后JVM重新分配内在。

因此一开始我们就把这两个设成一样,使得Tomcat在启动时就为最大化参数充分利用系统的效率,这个道理和jdbcconnection pool里的minpool size与maxpool size的需要设成一个数量是一样的原理。

-Xss

每个线程的栈的大小,减少这个值可以生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限制生成。如果程序没有报StackOverFlow,可以设置成128K。

如何知道JVM能够使用的最大值?

在设这个最大内存即Xmx值时请先打开一个命令行,键入如下的命令进行测试:

java -XmxXXXXM -version

XXXX为数量,如果命令执行正常刚表示内存可用,加大数量继续测试。

rem Guess CATALINA_HOME if not defined

 前加

set JAVA_OPTS=-Xms1024m -Xmx1024m -XX: PermSize=128M -XX:MaxPermSize=256m

Servlet.xml中的配置

<Server port="9005" shutdown="SHUTDOWN">
  <Service name="Catalina">
    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"  
    maxThreads="500" minSpareThreads="400" />
    <Connector executor="tomcatThreadPool"   
		port="80" protocol="HTTP/1.1"     
		connectionTimeout="20000" enableLookups="false"   
		redirectPort="8443" URIEncoding="UTF-8" acceptCount="1000" />  
    <Engine name="Catalina" defaultHost="localhost">
      <Host name="localhost"  appBase="webapps"
            unpackWARs="false" autoDeploy="false"
            xmlValidation="false" xmlNamespaceAware="false">
        <Context path="" docBase="D:\workspace\mln-beta\WebContent" reloadable="false"/>
     </Host>
    </Engine>
  </Service>
</Server>

相关推荐