在开发和面试过程中,经常遇到tomcat调优问题,目前可以从以下几个地方去优化;
1.通过动静分离来节约tomcat的资源
2.调整tomcat的线程池
3.调整tomcat的连接器
4.修改tomcat的运行方式
5.关闭AJP连接器
1.通过动静分离来节约tomcat的资源
动静分离来节约tomact的资源,通常采用;静态资源如果让 Tomcat 处理的话 Tomcat 的性能会被损耗很多,所以我们一般 都是采用:Nginx+Tomcat 实现动静分离,让 Tomcat 只负责 jsp 文件的解析工作,Nginx 实现静态资源的访问。
2.调整tomcat的线程池和调整tomcat的连接器
2.1 调整线程池通常和调整tomcat的连接器配合使用,具体修改参数如下:
<Executor name="tomcatThreadPool"
namePrefix="catalina-exec-"
maxThreads="150" <!--最大处理连接数线程-->
minSpareThreads="4"
maxIdLeTime=“6000” /><!--保留最少线程 数-->
2.2 对应连接器的修改如下:
<Connector executor="tomcatThreadPool"
port="8080"
protocol="HTTP/1.1" <!-- 使用的BIO模式-->
connectionTimeout="20000"
redirectPort="8443"
minProcessors="5" <!-- 同时处理请求的最小数 -->
maxProcessors="75" <!-- 同时处理请求的最大数 -->
acceptCount="1000" /> <!-- 接受最大并发数量 ,超过这个数量就会返回连接被拒绝 -->
3. 修改tomcat的运行方式: BIO,AIO,APR三种模式
3.1.tomcat7.0及之前使用BIO模式(堵塞)
3.2.tomcat8.0及以后使用AIO模式(非堵塞IO)
3.3.如果操作系统未安装 APR 或者 APR 路径未指到 Tomcat 默认可识别的路 径,则 APR 模式无法启动,自动切换启动 NIO 模式。所以必须要安装 APR 和 Native,直接启动就支持 APR,APR是从操作系统级别解决异步 IO 问题,APR 的本质就是使用 JNI 技术调用操作系统底层的 IO 接口,所以需要提前安装所需要的依赖
4.关闭AJP连接器
AJP的全称 Apache JServer Protocol,使用 Nginx+Tomca t的架构,所以用不着 AJP 协议,所以把AJP连接器禁用。
配置如下:
注释<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>