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过于频繁

你可能感兴趣的:(tomcat,nio,bio,aio,高性能)