tomcat请求 7.0:BIO同步阻塞 8.0:NIO同步非阻塞 9.0;AIO异步非阻塞
Tomcat优化方案: 1.connect连接 2..host参数 3.Executor参数
1.改变IO同步异步方式,由同步改为异步,把NIO改成AIO
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 通过修改protol该改变成下面org.apache.coyote.ajp.AjpNioProtocol可以变成AIO <Connector port="8080" protocol="org.apache.coyote.ajp.AjpNioProtocol" connectionTimeout="20000" redirectPort="8443" /> 可以看到8.0.15默认是HTTP/1.1是NIO 7.0是BIO 9.0是AJP/1.3为AIO
2.修改线程池数量
Tomcat 的线程池默认数量:
给connect指定tomcatThreadPool线程池数量大小如下:
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="150" minSpareThreads="4"/> <Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
3.springboot的默认tomcat优化方式---->集成 mq redis tomcat starter
application.yml文件或者---->@ConfigurationProperties注解修改
4.0server.xml里面用不到的标签也可以删除,
从上面的源码可以看出一个connect,executor,Listener等都是一个组件,tomcat都会使用在java层面创建对象,占用内存和IO开销
4.0 host优化
unpackWARs 把war包进行解压,默认也是开启的 不需要war包的其实可以在xml删除这个属性 autoDeploy 自动部署,默认是开启的
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true" startStopThreads="5">
把startStopThreads加上去可以多线程部署web应该用,默认值为1个线程部署
5.0 session默认配置也可以优化
<!-- ==================== Default Session Configuration ================= --> <!-- You can set the default session timeout (in minutes) for all newly --> <!-- created sessions by modifying the value below. --> <session-config> <session-timeout>30</session-timeout> </session-config> 如果会话管理在第三方,web.xml的默认session配置也可以去掉
6.0把work问价夹下的Catalina里面可以清理,log文件夹的东西也可以删掉 5.0和6.0就可以增加tomcat部署启动的速度