使用下面几步来提高Tomcat服务器的性能。

  1. 增加JVM堆内存大小
  2. 修复JRE内存泄漏
  3. 线程池设置
  4. 压缩
  5. 数据库性能调优
  6. Tomcat本地库
  7. 其它选项

1.JVM优化 

   JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m   -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m -XX:MaxPermSize=512m -XX:+DisableExplicitGC"

2.tomcat日志提高Tomcat 的日志级别 

      tomcat日志有以下5种:

引擎的日志文件

      2.host-manager.2013-07-03.log  

Tomcat下内部代码丢出的日志

默认manager应用日志

      5.access日志  客户端访问日

 

      将logging.properties 中的org.apache.juli.FileHandler.level有默认的FINE 改为INFO。  

     Logging settings in Production

       • conf/logging.properties

.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

      • Causes duplicate logging 
      • May fill up catalina.out (no rotation)

       Change to

       • conf/logging.properties

.handlers = 1catalina.org.apache.juli.FileHandler

3.Tomcat最大连接数

           在Tomcat 的配置文件 server.xml中修改最大连接数、超时时间等参数:
 

      

<Connector port="8080" protocol="HTTP/1.1"
               enableLookups="false" disableUploadTimeout="true"
               compression="on" compressionMinSize="2048"
               compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
               connectionTimeout="20000"
               maxThreads="3000" acceptCount="300"
               URIEncoding="utf-8"
               redirectPort="8443" />

4.catalina.out和访问日志分割

     使用logrotate切割catalina.out

   

cd      /etc/logrotate.d
     sudo vim tomcat
 /home/rideo/apache-tomcat-7.0.50/logs/catalina.out {
       rotate 30
       create
       daily
      copytruncate
      compress
      notifempty
       missingok
  }
rotate 7 表示保留7天的备份文件
daily 表示每天整理一次
copytruncate 表示先复制log文件的内容,然后再清空
compress 表示压缩备分文件
missingok 表示如果找不到log文件也没OK
notifempty 表示如果log文件是空的,就不进行rotate

判断系统的日志文件,建立转储计划以及参数,通过cron daemon 运行下面的代码缺省的crontab来每天运行logrotate。

#/etc/cron.daily/logrotate
#! /bin/sh

/usr/sbin/logrotate /etc/logrotate.d/tomcat

 

定期清理访问日志

建立清除日志文件的shell脚本,文件名为clean_log,存放目录任意

 

#! /bin/bash
logdir=/home/rideo/apache-tomcat-7.0.50/logs
cd ${logdir}
declare -i filesum=`ls localhost_access_log* | wc -l`
declare -i delnum=$filesum-30
if [ "${delnum}" -ge 1 ];then
  rm -rf `ls -tr localhost_access_log* | head -${delnum}`
fi
 
declare -i catalinasum=`ls catalina.*.log | wc -l`
declare -i delcatlinasum=$catalinasum-30
if [ "${delcatlinasum}" -ge 1 ];then
  rm -rf `ls -tr catalina.*.log | head -${delcatlinasum}`
fi
 
declare -i hostmanagersum=`ls host-manager.*.log | wc -l`
declare -i delhostmanagersum=$hostmanagersum-30
if [ "${delhostmanagersum}" -ge 1 ];then
    rm -rf `ls -tr host-manager.*.log | head -${delhostmanagersum}`
fi
 
declare -i localhostsum=`ls localhost.*.log | wc -l`
declare -i dellocalhostsum=$localhostsum-30
if [ "${dellocalhostsum}" -ge 1 ];then
    rm -rf `ls -tr localhost.*.log | head -${dellocalhostsum}`
fi
 
declare -i managersum=`ls manager.*.log | wc -l`
declare -i delmanagersum=$managersum-30
if [ "${delmanagersum}" -ge 1 ];then
     rm -rf `ls -tr manager.*.log | head -${delmanagersum}`
fi

 


添加运行权限:chmod 755  clean_log

再添加为自动运行任务:vi /etc/crontab,添加:
  01 04   * * *  root  /home/rideo/dev/clean_log

 

脚本附件 : clean_log.sh

5  压缩

Tomcat有一个通过在server.xml配置文件中设置压缩的选项。压缩可以在connector像如下设置中完成,

<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8181" compression="500"
compressableMimeType="text/html,text/xml,text/plain,application/octet-stream" />

 

在前面的配置中,当文件的大小大于等于500bytes时才会压缩。如果当文件达到了大小但是却没有被压缩,那么设置属性compression="on"。否则Tomcat默认设置是“off”。

6.数据库性能调优

7 Tomcat原生库

        Tomcat的原生库基于Apache可移植运行时(Apache Portable Runtime简称APR),给程序员提供了超强的扩展性和性能,在产品运作中帮助融合原生的服务器技术以展现最佳的性能。

 

8.性能测试

       用ab进行基准调校

                 

ab -k -n 100000 -c 149  http://tomcathost:8080

9.tomcat硬件配置

      4核4G 20G硬盘