zoukankan      html  css  js  c++  java
  • Tomcat 高性能实现关键点

    我在这里给大家讲解下Tomcat架构设计的几个关键要素,重点从性能及高可用等几个方面来讲解:

    1.技术选型

    (1) BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序直观简单易理解。

    配制项:protocol=”HTTP/1.1”

    (2) NIO方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂,JDK1.4开始支持。

    配制项:protocol=”org.apache.coyote.http11.Http11NioProtocol”

    备注:我们常用的Jetty,Mina,ZooKeeper等都是基于java nio实现.

    (3) AIO方式使用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂,JDK7开始支持。

    配制项:protocol=”org.apache.coyote.http11.Http11AprProtocol”

    备注:需在本地服务器安装APR库

    2.配制调优

    (1) 提高Tomcat请求处理能力
    修改server.xml:对于Linux服务器:maxThreads + acceptCount之和建议不超过1000

    <Connector port="8080"   
          protocol="org.apache.coyote.http11.Http11NioProtocol"  
                    connectionTimeout="20000"  
                    redirectPort="8443"   
                    maxThreads="600"
                 acceptCount="200"
                    minSpareThreads="50"
                 maxSpareThreads="80"
                    disableUploadTimeout="true" 
                    enableLookups="false"   
                    URIEncoding="UTF-8" />

    (2) 提高网络传输效率
    开启gzip压缩(http:8080或https:8443压缩)
    在上述修改项中添加:

    compression="on" compressionMinSize="2048"

    3.系统内核调优
    将Tomcat自身的配置调至较优或最优,不代表真正达到预期的效果,还有将系统内核调至最优,相关设置可以参考我的另一篇博客:

    Linux系统内核性能调优
    http://blog.csdn.net/hexieshangwang/article/details/47253241

    4.集群
    Linux + Nginx + Tomcat
    这个是我们常见的集群方式,我们可以在Nginx通过缓存或会话机制,建少连接数透传到Tomcat层

    另外,一般架构设计层面出问题主要集中在以下几个方面:

    1.达到能力上限
    2.Disk IO 或 Network IO阻塞
    3.webapp运行过程中异常未捕获
    4.GC过于频繁

  • 相关阅读:
    NIO通道的学习笔记
    Struts学习笔记(启动过程)
    Struts2学习笔记(ResultType)
    11
    编写类String的构造函数、析构函数和赋值函数(转载)
    new与malloc的区别
    不用判断语句,求两个数中大的那个
    delete p和delete[] p的区别(转)
    (转)虚函数和纯虚函数区别
    不借助第三个变量交换两个整数的值
  • 原文地址:https://www.cnblogs.com/qwop/p/6637341.html
Copyright © 2011-2022 走看看