Tomat性能优化--2

  • Tomcat配置优化
     springboot默认都集成了下面这些配置优化
  1. 如果项目只提供接口,没有静态资源的, 可移除我们conf/web.xml视图层组件JspServlet配置
     比如微服务项目,没有jsp的加载
    // 移除tomcat中,conf/web.xml的下面配置   
    <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>
    ......
  2. 去除conf/web.xml中的welcome-file-list欢迎页配置
     
  3. 去除conf/web.xml中返回类型的多余配置,微服务项目默认都是json返回类型
     <mime-mapping>作用就是告诉给浏览器处理的格式
     
  4. 去除conf/web.xml中tomcat集群的session配置
    几乎在很多公司都是采用token替代Session session-config
     
  5. 移除conf/server.xml中每次请求打印日志: AccessLogValve, 因为大多数都采用nginx记录每次请求地址
    // 去除config/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" />
      去除该配置后,tomcat将不再生成下面记录日志

  6. 移除conf/server.xml中修改autoDeploy=属性(默认true) 
    autoDeploy=true  表示tomcat在启动的时候,开启周期性的检查有没有应用更新和部署!
    autoDeploy=false --生产环境中设置为false,关闭
  7. 移除conf/server.xml中修改reloadable=属性(默认false)  
    reloadable=true 表示tomcat会监听WEB-INF/lib和WEB-INF/classes的变化,如果有,则tomcat重新加载 
    默认tomcat没有开启配置 
  • tomcat线程池优化
  1. Tomcat中分为以下四种IO模型
    a. BIO 使用传统io模型处理我们请求 阻塞io;
    b. NIO 同步非阻塞式io 效率比BIO提高非常多倍          --tomcat8后也采用了该模型
    c. AIO 异步非阻塞形式
    d. APR tomcat以JNI形式调用http服务器的核心动态链接库来处理文件读取或网络传输操作,需要编译安装APR库。 
      
    使用jconsole连接,查看线程,可以通过线程名称判断出:
    Springboot内嵌的tomcat使用的是: NIO,外部tomcat再之前使用的是: APR 

    优化: 修改config/server.xml, 修改外部tomcat的IO模型为:NIO
    // 默认APR模型    
    <Connector port="2017" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />
    // 修改NIO模型
        <Connector port="2017" protocol="org.apache.coyote.http11.Http11NioProtocol"
                   connectionTimeout="20000"
                   redirectPort="8443" />
    
    ---其他IO模型配置---
    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. tomcat线程池优化
    在config/server.xml中配置线程池
           // 默认注释掉的 
         <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
            maxThreads="150" minSpareThreads="10"/>
    maxThreads参数表示我们做多同时存在150个线程;
    minSpareThreads 最小活跃的线程是为10个;tomcat启动就一直存在
     --表示tomcat启动时有10的线程,如果有150个请求过来,就会再创建140(一共150)个线程去处理请求,处理完成后就会销毁140个,一直保留10个!
    如何配置和引用:在config/server.xml配置如下

    根据实际项目情况配置线程数 
    1.如果并发量比较大的情况下 最小活跃线程建议设置比较大,可以避免重复处理线程 可以增加吞吐量;如果最小活跃的线程如果比较大的情况下,非常占用cpu资源;
    2. 如果是项目的并发量比较小的情况下,最小活跃线程可以设置小一点,可以节约cpu内存 
    实际案例:
    通过监控工具监控线程,如果一个项目20/s请求, tomcat线程池 最大线程树为100 最小活跃线程树30
  3. Connector的优化
    a.8080 Http协议 处理我们的请求
    b.8009 ajp协议 属于tomcat内部通讯端口号
    建议在config/server.xml中移除ajp协议 8009端口监听  减少我们服务器内存消耗
     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值