• Tomcat6性能优化


    1.内存设置
          Windows环境下修改“%TOMCAT_HOME%incatalina.bat”文件,在文件开头增加如下设置:set JAVA_OPTS=-Xms256m -Xmx512m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m

          -Xms设置初始化内存大小
          -Xmx设置可以使用的最大内存
          -Xmn:内存最小值,-Xmn128-256m就够了

          JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于 40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、 -Xmx相等以避免在每次GC 后调整堆的大小。 
          在较大型的应用项目中,默认的内存是不够的,有可能导致系统无法运行。常见的问题是报Tomcat内存溢出错误“java.lang.OutOfMemoryError: Java heap space”,从而导致客户端显示500错误。

          -XX:PermSize=128M
          -XX:MaxPermSize=256m,默认为32M

          PermSize/MaxPermSize:定义Perm段的尺寸,PermSize为JVM启动时Perm的内存大小;MaxPermSize为最大可占用的Perm内存大小。
          PermGen space的全称是Permanent Generation  space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen  space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage  Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很CLASS的话,就很可能出现“java.lang.OutOfMemoryError: PermGen space”错误。
          对于WEB项目,jvm加载类时,永久域中的对象急剧增加,从而使jvm不断调整永久域大小,为了避免调整),你可以使用更多的参数配置。如果你的WEB APP下都用了大量的第三方jar,  其大小超过了jvm默认的大小,那么就会产生此错误信息了。

          -XX:NewSize,默认为2M,此值设大可调大新对象区,减少Full GC次数
          -XX:MaxNewSize,默认为16M
          -XX:NewRatio,默认为8
          -XX:SurvivorRatio=NewRatioSize
          -XX:userParNewGC 可用来设置并行收集【多CPU】
          -XX:ParallelGCThreads 可用来增加并行度【多CPU】
          -XXUseParallelGC 设置后可以使用并行清除收集器【多CPU】


          内存由 Perm 和 Heap 组成. 其中
                  Heap = {Old + young = { Eden , from, to } }
          -XX:NewRatio:改变新旧空间的尺寸比例,这个比例的缺省值是8,意思是新空间的尺寸是旧空间的1/8。
          -XX:SurvivorRatio:改变Eden对象空间和残存空间的尺寸比例,这个比例的缺省值是10,意思是Eden对象空间的尺寸比残存空间大survivorRatio+2倍。
          例:下面的命令把整个堆设置成128m,新域比率设置成3,即新域与旧域比例为1:3,新域为堆的1/4或32M:
                  java –Xms128m –Xmx128m –XX:NewRatio =3


          如果不是执行startup.bat启动tomcat而是利用windows的系统服务启动tomcat服务,上面的设置就不生效了。解决办法:
          修改注册表HKEY_LOCAL_MACHINESOFTWAREApache Software FoundationProcrun 2.0Tomcat6ParametersJavaOptions
    原值为
    -Dcatalina.home=E:Tomcat 6.0
    -Dcatalina.base=E:Tomcat 6.0
    -Djava.endorsed.dirs=E:Tomcat 6.0commonendorsed
    -Djava.io.tmpdir=E:Tomcat 6.0 emp
    -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
    -Djava.util.logging.config.file=E:Tomcat 6.0conflogging.properties
    加入 -Xms256m -Xmx512m,重起tomcat服务,设置生效

          Linux环境下修改“%TOMCAT_HOME%incatalina.sh”文件,在文件开头增加如下设置:JAVA_OPTS=’-Xms256m -Xmx512m’

    2.并发数设置
          默认的tomcat配置,并发测试时,可能30个USER上去就当机了。
          添加
         <Connector port="80" protocol="HTTP/1.1"
                 maxThreads="600"
                 minSpareThreads="100"
                 maxSpareThreads="500"
                 acceptCount="700"

                connectionTimeout="20000"
                redirectPort="8443" />
    说明
           maxThreads="600" ///最大线程数
           minSpareThreads="100"///初始化时创建的线程数
           maxSpareThreads="500"///一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。
           acceptCount="700"//指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理

          maxthread太多,导致切换过多,性能下降严重。这个数量应该是你单个机器的承载能力, 压力测试下得出的结果。 不可任意加大。一般情况下, 256-512个已经非常高的数值了。



    参考文献
    1.我在linux系统下web系统. http://www.iteye.com/topic/299988
    2.Tomcate启动内存设置.http://blog.csdn.net/peijunlin/archive/2009/06/05/4244401.aspx
    3.Tomcat6 一些调优设置内存和连接数.http://mcncc.com/simple/?t25909.html
    4.Java虚拟机参数 -XX等相关参数应用. http://hi.baidu.com/charlesyy/blog/item/b89b5dee30cfdaf9b2fb95d5.html/cmtid/dda586260800bf1a8b82a173

    原文地址:

    http://blog.chinaunix.net/uid-122937-id-201606.html

  • 相关阅读:
    .Net并行编程
    ShopEx4.8.5.55328破解版
    PLinq
    C# 4.0 Parallel
    WCF、Web API、WCF REST、Web Service
    WCF 采用net.tcp协议
    MVC 过滤器3
    go orcale
    获取合并单元格中值的一个方法POI
    发起、维持和发展以利润为导向的企业的有目的性的行为(转)
  • 原文地址:https://www.cnblogs.com/edison2012/p/4588972.html
Copyright © 2020-2023  润新知