tomcat8性能优化

源于蚂蚁课堂的学习,点击这里查看(老余很给力)

其实springboot中通过内嵌tomcat的方式已对tomcat做了去除臃肿的操作,所以我们可以参照微服务的方式
去优化tomcat

1.若项目的视图没有使用JSP,可以将其去掉

将conf/web.xml中关于jsp的配置删除,即如下:
    <servlet>
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <init-param>
            <param-name>fork</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>xpoweredBy</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>jsp</servlet-name>
        <url-pattern>*.jsp</url-pattern>
        <url-pattern>*.jspx</url-pattern>
    </servlet-mapping>

 2.去掉默认的首页

还是conf/web.xml,删除welcome-file-list节点,我们可以自定义

3.微服务项目可以设定其数据格式 

conf/web.xml中有很多mime-mapping节点
mime-mapping作用就是告诉给浏览器处理的格式,微服务项目只需要配置json即可

4.服务器集群的项目可去除session

如果服务器集群的,session的支持不是很又友好 几乎在很多公司都是采用token替代Session 
可删除conf/web.xml中的session-config配置

5.Reloadable设为false

Reloadable配置建议禁止,如果为true,则tomcat会实现热部署
即,自动检测应用程序的/WEB-INF/lib和/WEB-INF/classes目录的变化,自动装载新的应用程序。
生产环境此乃大忌

 6.去除冗余日志

主流都是nginx记录每次请求地址,且此日志几乎不会被人查看,los/localhost_access_log.*
移除conf/server.xml中如下配置

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

 7.线程池优化

conf/server.xml 配置相关线程池
  <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="150" minSpareThreads="4"/>


相关参数配置:
name: 线程池名称
namePrefix: 创建的每个线程的名称前缀, 单独的线程名称为 namePrefix + threadNumber.
maxThreads: 线程池中最大并发线程数, 默认值为200, 一般建议设置400~ 800 , 要根据服务器配置和业务需求而定.
minSpareThreads: 最小活跃线程数, 也就是核心线程数, 不会被销毁, 会一直存在.
prestartminSpareThreads: 是否在启动程序时就生成minSpareThreads个线程, 默认为false, 即不启动. 若不设置为true, 
则minSpareThreads的设置就不起作用了.
maxIdleTime: 线程最大空闲时间, 超过该时间后, 空闲线程会被销毁, 默认值为6000, 单位为毫秒.
maxQueueSize: 最大的等待队列数, 超过则拒绝请求. 默认值为int类型的最大值(Integer.MAX_VALUE), 等同于无限大. 
一般不作修改, 避免发生部分请求未能被处理的情况.
threadPriority: 线程池中线程的优先级, 默认值为5, 取值范围: 1 ~ 10.

8.Connector优化 

默认情况下Tomcat开启了两个Connector 
分别为:
Connector 监听8080 Http协议
Connector 监听8009 AJP协议 (tomcat内部之间通讯)
建议可以将Connector连接器移除,能够减少内存的消耗

9.IO模型优化 

1.BIO:
阻塞式IO,采用传统的java IO进行操作,该模式下每个请求都会创建一个线程,
适用于并发量小的场景

2.NIO:
同步非阻塞,比传统BIO能更好的支持大并发,tomcat 8.0 后默认采用该模式

3.APR:tomcat 以JNI形式调用http服务器的核心动态链接库来处理文件读取或网络传输操作,需要编译安装APR库

4.AIO:异步非阻塞,tomcat8.0后支持
配置方法:在tomcat conf 下找到server.xml
在<Connector port="8080" protocol="HTTP/1.1"/>
BIO:  protocol =" org.apache.coyote.http11.Http11Protocol"
NIO: protocol ="org.apache.coyote.http11.Http11NioProtocol"
AIO: protocol ="org.apache.coyote.http11.Http11Nio2Protocol"
APR: protocol ="org.apache.coyote.http11.Http11AprProtocol"

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值