使用下面几步来提高Tomcat服务器的性能。
- 增加JVM堆内存大小
- 修复JRE内存泄漏
- 线程池设置
- 压缩
- 数据库性能调优
- Tomcat本地库
- 其它选项
1.JVM优化
在Tomcat 的启动脚本 catalina.sh中添加如下的启动参数:
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF
-8
-server -Xms
1024
m -Xmx
1024
m
-XX:NewSize=
512
m -XX:MaxNewSize=
512
m -XX:PermSize=
512
m
-XX:MaxPermSize=
512
m -XX:+DisableExplicitGC"
2.tomcat日志提高Tomcat 的日志级别
tomcat日志有以下5种:
1.catalina.2013-07-03.log 或者 catalina.out 引擎的日志文件
2.host-manager.2013-07-03.log
3.localhost.2013-07-03.log Tomcat下内部代码丢出的日志
4. manager.2013-07-03.log 默认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像如下设置中完成,
1 2 3 4 |
|
在前面的配置中,当文件的大小大于等于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硬盘