Tomcat粗浅优化

目前只使用过Windows服务器,所以只针对Windows服务器,Linux目前没怎么用过不是很清楚,但是查了下用法大概都是差不多的,知识操作过程不同。

1、AJP

网上看了一堆,基本都说AJP是为 Tomcat 与 HTTP 服务器之间通信而定制的协议,能提供较高的通信速度和效率。也有说是静态资源分配协议,搞得我都有点懵,但是有一点是没错的,那就是一般用不到这个协议……

关闭Tomcat自带的AJP协议(Tomcat默认是开启的),AJP需要Apache服务器配合,但是实际生产环境很少会是Apache服务器,大部分用的是Nginx替代。

在server.xml中找到<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />,注释掉就可以。

2、IO优化

Tomcat默认使用的是BIO优化,这里我们改用NIO优化,这里引用一篇文章中的话语:

1:同步阻塞IO(JAVA BIO) 同步并阻塞,服务器实现模式为一个连接一个线程(one connection one thread 想想都觉得恐怖,线程可是非常宝贵的资源),当然可以通过线程池机制改善.

2:JAVA NIO:又分为同步非阻塞IO,异步阻塞IO 与BIO最大的区别one request one thread.可以复用同一个线程处理多个connection(多路复用).

3:,异步非阻塞IO(Java NIO2又叫AIO) 主要与NIO的区别主要是操作系统的底层区别.可以做个比喻:比作快递,NIO就是网购后要自己到官网查下快递是否已经到了(可能是多次),然后自己去取快递;AIO就是快递员送货上门了(不用关注快递进度)。

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

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

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

在server.xml中

<Connector port="80" protocol="org.apache.coyote.http11.Http11NioProtocol" 
    connectionTimeout="20000" 
    URIEncoding="UTF-8" 
    useBodyEncodingForURI="true" 
    enableLookups="false" 
    redirectPort="8443" />

实现对Tomcat的IO切换。

其实就是将protocol中的org.apache.coyote.http11.Http11BioProtocol改为org.apache.coyote.http11.Http11NioProtocol 即可。

这是这篇文章的链接:https://www.cnblogs.com/zhuawang/p/5213192.html

 

这是我觉得最好操作的两个优化,还有很多很多的方式可以优化,比如缓存,线程池(并发),内存优化,还有APR等等,但是这些需要有相当深入的了解才能很好的进行配置,在这里也贴出一篇其他大神的文章供大家参考:

http://blog.51cto.com/8248183/2062343

才疏学浅,只能借鉴大佬的文章,愧不敢言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值