Tomcat性能优化

382 阅读4分钟

优化Tomcat之前,我们需要明白一点,我们平时安装tomcat时,它所默认的配置参数,都是为开发环境制定的,默认参数都很小,此时在服务器上就很容易成为性能的瓶颈.

对于其优化问题,我们可以从以下几个方面来进行优化:

1.Tomcat 堆内存
    -server 启用jdk的server版
    -Xms java 虚拟机初始化时的最小内存
    -Xmx java虚拟机可使用的最大内存
    -XX:PermSize 内存永久保留区域
    -XX:MaxPermSize内存最大永久保留区域
以上参数就是需要我们修改的配置参数,具体方法如下:
    Windos中的,修改catalina.bat, linux中的修改catalina.sh ,在文件中@echo off下面增加一行配置参数
        set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m
    这里是将堆内存设置为1024m,具体的要根据机器内存来设置的,设置要符合自己机器或者服务器的内存,不能超过其内存大小,否则Tomcat会直接挂掉

2.Tomcat 线程连接
对于连接进行一定的配置,能节省Tomcat的性能,不用浪费在不必要的事情上面,
    进入Tomcat/conf/server.xml文件,对80端口的连接设置进行修改,增加配置:
        maxThreads="600"    这是配置最大线程数
        minSpareThreads="100"   初始化时创建的线程数
        maxSpareThreads="500"   创建的线程如果超过这个值,Tomcat就会关闭不再需要的socket线程
        acceptCount="700"   指所有可以处理请求的线程都被使用时,可以放到处理列队中的请求数为700,超过的不予理会

3.Tomcat连接池
    打开/conf/server.xml文件,可以看到Tomcat中存在多个 connector,所以可以配置多个connector共用一个连接池,在文件中增加线程池的参数(说白了就是增加了一个线程池):
        <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="20" maxIdleTime="60000">
        这表示 最大线程为500, 最小空闲线程数为20, 线程最大空闲时间为60秒
    然后,在你需要这样配置线程池的 connector节点上增加以下属性:
        <Connector executor="tomcatThreadPool(其实就是上一步创建的线程池名字)" 参数就省略了,和80的一样>
        
4.禁用 DNS 查询
    每当Web 程序想要记录客户端的信息的时候,它也会记录客户端IP地址或通过域名服务器查找机器名,转换为 IP地址在记录
    而DNS查询是需要占用网络,并且有可能需要从很多很远的服务器上去获取对应的 IP 地址,这个过程会消耗一定的时间.
    修改 server.xml文件中的 connector元素,修改属性 enableLookups参数值为:
        enableLookups="false"
    如果为 true, 则可以通过调用 request.getRemoteHost()进行DNS查询来获取客户端的实际主机名.为false则不进行DNS查询,而是返回其 IP 地址

5.设置session 过期时间
    通过修改 conf/web.xml 文件来指定过期时间,单位为 分钟
        <session-config>
            <session-timeout>180</session-timeout>
        </session-config>
    
6.使用Apr插件来提高Tomcat性能
    使用Apr 插件可以给 Tomcat 提供超强的可伸缩性和性能,更好的基础本地服务器技术
    举个列子来说明APR的给Tomcat带来的强大性能:
        在慢速网络上,不使用APR 的情况下将Tomcat 的线程开到300+,然后加上一大堆并发请求,你会发现很快300线程很快就会满,多余的请求就只能等待,请求全都阻塞了.
        然后同样的情况下,使用了APR之后,你会发现线程可能只被占用了 几十个,请求毫无阻塞.
    APR安装步骤:
        (1)安装APR tomcat-native
apr-1.3.8.tar.gz   安装在/usr/local/apr
#tar zxvf apr-1.3.8.tar.gz
#cd apr-1.3.8
#./configure;make;make install

apr-util-1.3.9.tar.gz  安装在/usr/local/apr/lib
#tar zxvf apr-util-1.3.9.tar.gz
#cd apr-util-1.3.9  
#./configure --with-apr=/usr/local/apr ----with-java-home=JDK;make;make install

#cd apache-tomcat-6.0.20/bin  
#tar zxvf tomcat-native.tar.gz  
#cd tomcat-native/jni/native  
#./configure --with-apr=/usr/local/apr;make;make install

(2)设置 Tomcat 整合 APR
    修改 tomcat 的启动 shell (startup.sh),在该文件中加入启动参数:
  CATALINA_OPTS="$CATALINA_OPTS -Djava.library.path=/usr/local/apr/lib" 。

(3)判断安装成功:
    如果看到下面的启动日志,表示成功。
    2007-4-26 15:34:32 org.apache.coyote.http11.Http11AprProtocol init