目前只使用过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
才疏学浅,只能借鉴大佬的文章,愧不敢言。