设为首页 收藏本站
查看: 980|回复: 0

[经验分享] tomcat生产环境优化

[复制链接]

尚未签到

发表于 2015-8-11 15:56:44 | 显示全部楼层 |阅读模式
  使用下面几步来提高Tomcat服务器的性能。


  • 增加JVM堆内存大小
  • 修复JRE内存泄漏
  • 线程池设置
  • 压缩
  • 数据库性能调优
  • Tomcat本地库
  • 其它选项

1.JVM优化

在Tomcat 的启动脚本 catalina.sh中添加如下的启动参数:

   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种:
  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




<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硬盘

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-97589-1-1.html 上篇帖子: How Tomcat Works(八) 下篇帖子: Character Encoding tomcat.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表