天天看点

Tomcat优化

Tomcat 介绍

apache旗下轻量级,免费服务器 适用于中小型项目

目前主流版本 7.x,8.x,9.x

启动优化

优化内存,初始化内存 指定catalina.sh文件下初始启动最大最小内存

set   CATALINA_OPTS=-Xms1024m -Xmx2048m      

jvm内存gc优化

set "JAVA_OPTS= -server -Xms4096M -Xmx4096M  -Xss512k -XX:+AggressiveOpts -XX:+UseBiasedLocking  -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=15 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC  -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true"      
  1. -server使用tomcat的服务器配置,性能会高一点 不开启,默认是客户端模式
  2. xms xmx xss 优化最大最小 每个线程使用的内存
  3. 后续-xx:用来优化gc

并发优化

基本优化:

修改conf/server.xml

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />      

增加属性

<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
             maxThreads="600" #最大线程数
             minSpareThreads="100"#最小空闲连接
             maxSpareThreads="100" #最大空闲连接
             acceptCount="500" #排队连接数 当连接数达到tomcat最大连接数之后,会进入排队状态,这个参数限制了排队的连接数,超过这个数,返回连接失败 默认100
               connectionTimeout="20000" #连接超时时间 -1永不超时
               redirectPort="8443" />      

优化策略:

  1. 增加并发配置
    1. maxThreads 最大线程数
    2. minProcessors/maxProcessors 最大/最小同时处理线程数
    3. minSpareThreads/maxSpareThreads 最大/最小空闲连接数
    4. acceptCount 队列数
    5. connectionTimeout 连接超时
    6. enableLookups 反查主机名
    7. compression 压缩页面
    8. compressionMinSize="1024" 压缩最小体积
    9. compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" 压缩格式
  1. 修改通讯协议 bio/nio/aio(apr)  tomcat8默认使用nio
    1. bio 同步阻塞
    2. nio 同步非阻塞
    3. aio 异步非阻塞
  1. 禁用ajp连接器
  2. 开启线程池
<Executor name="tomcatThreadPool" namePrefix="HTTP-8080-exec-"
        maxThreads="5000" minSpareThreads="10"
    acceptCount="1000" 
    />
a. 
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
      maxThreads="100"
      minSpareThreads="5"
      maxSpareThreads="20"
      acceptCount="100"
               redirectPort="8443" 
      executor="tomcatThreadPool"
      />      
    1. 开启线程池后,连接器配置的部分并发参数无效化