Tomcat性能优化(整理)

来源:互联网 发布:centos 7 nfs安装配置 编辑:程序博客网 时间:2024/05/20 19:31

精简Tomcat和配置文件

官网下载tomcat,并解压

1)删除不需要的管理应用和帮助应用,提高tomcat安全性

删除webapps下所有文件
# rm –fr $CATALINA_HOME/webapps/*
删除server/wenapps下所有文件 (此目录本人在tomcat-6.0.37版本下未找到)
# rm –fr $CATALINA_HOME/server/webapps/*

2)精简sever.xml配置文件

使用tomcat发布版本中的最小配置文件,提高性能,如果有功能上的需求,在逐个的加入功能配置。
备份原来的server.xml为server.xml_bak
# mv server.xml server.xml_bak
复制server-minimal.xml为server.xml
# cp server-minimal.xml server.xml(未找到server-minimal.xml,下面说一下我的简化过程)

 

打开server.xml,删除GlobalNamingResources和Realm节点

Tomcat内存设置

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

 

Linux环境下修改“%TOMCAT_HOME%\bin\catalina.sh”文件,在文件开头增加如下设置: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”错误。

 

并发数设置

<Connector port="8080" protocol="HTTP/1.1"
    maxTreads="256" minSpareThreads="30" maxSpareThreads="150"
    acceptCount="50"
    enableLookups="false"
               connectionTimeout="20000" URIEncoding="UTF-8"
               redirectPort="8443" />

 

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

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

0 0