Tomcat-配置优化

Tomcat-配置优化

此文属于配置方面的优化,内存、并发、缓存三方面进行优化

1. 内存优化

  Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本catalina.sh中设置 JAVA_OPTS参数。
JAVA_OPTS
JAVA_OPTS参数说明

  -server 启用jdk 的 server 版; 
  -Xms java虚拟机初始化时的最小内存; 
  -Xmx java虚拟机可使用的最大内存; 
  -XX: PermSize 内存永久保留区域 
  -XX:MaxPermSize 内存最大永久保留区域 

  参考参数配置
  现公司服务器内存一般条件都可以 ,所以可以采取以下配置:

  JAVA_OPTS='-Xms1024m -Xmx2048m -XX: PermSize=256M -XX:MaxNewSize=256m -XX:MaxPermSize=256m'

  配置完成后可重启Tomcat 即可

2. 并发优化

在Tomcat 配置文件 server.xml 中的

    <!-- A "Connector" represents an endpoint by which requests are received
         and responses are returned. Documentation at :
         Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)
         Java AJP  Connector: /docs/config/ajp.html
         APR (HTTP/AJP) Connector: /docs/apr.html
         Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
    -->
    <Connector port="8080" 
      protocol="HTTP/1.1"
      connectionTimeout="20000"
      redirectPort="8443"  />

## 2.1 参数说明

  maxThreads 客户请求最大线程数 
  minSpareThreads Tomcat初始化时创建的 socket 线程数 
  maxSpareThreads Tomcat连接器的最大空闲 socket 线程数 
  enableLookups 若设为true, 则支持域名解析,可把 ip 地址解析为主机名 
  redirectPort 在需要基于安全通道的场合,把客户请求转发到基于SSL 的 redirectPort 端口 
  acceptAccount 监听端口队列最大数,满了之后客户请求会被拒绝(不能小于maxSpareThreads ) 
  connectionTimeout 连接超时 
  minProcessors 服务器创建时的最小处理线程数 
  maxProcessors 服务器同时最大处理线程数 
  URIEncoding URL统一编码

2.2 Tomcat中的配置示例

  <Connector port="8080"
  protocol="HTTP/1.1"
  maxHttpHeaderSize="8000"
  maxThreads="1000"
  minSpareThreads="100"
  maxSpareThreads="1000"
  minProcessors="100"
  maxProcessors="1000"
  enableLookups="false"
  URIEncoding="utf-8"
  acceptCount="1000"
  redirectPort="8443"
  disableUploadTimeout="true"/>

3. 缓存优化

3.1 参数说明

  compression 打开压缩功能 
  compressionMinSize 启用压缩的输出内容大小,这里面默认为2KB 
  compressableMimeType 压缩类型 
  connectionTimeout 定义建立客户连接超时的时间. 如果为 -1, 表示不限制建立客户连接的时间

3.2 Tomcat中的配置示例

image.png

  <Connector port="8080"
  protocol="HTTP/1.1"
  maxHttpHeaderSize="8000"
  maxThreads="1000"
  minSpareThreads="100"
  maxSpareThreads="1000"
  minProcessors="100"
  maxProcessors="1000"
  enableLookups="false"
  compression="on"
  compressionMinSize="2048"
  compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
  connectionTimeout="20000"
  URIEncoding="utf-8"
  acceptCount="1000"
  redirectPort="8443"
  disableUploadTimeout="true"/>

3.3 Connector参考配置,可适应百万级并发

左侧优化前,右侧优化后

image.png

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可

Links: https://blog.wyatt.plus/?p=34

Buy me a cup of coffee ☕.