庄生晓梦

庄生晓梦迷蝴蝶

博客园 首页 新随笔 联系 订阅 管理

我在这里给大家讲解下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过于频繁

posted on 2015-11-19 11:01  qwop  阅读(151)  评论(0编辑  收藏  举报