Tomcat 性能优化配置

Tomcat 通常是JavaWeb开发中默认的开发环境,但是Tomcat的默认配置在作为生产环境时,很难满足我们的需求,很多方面都是可以优化的,尤其是内存和线程的配置,默认都很低。

下面结合资料和实际工作中的情况,从内存、并发、缓存、IO四个方面分析下优化的方法。
 
一、Tomcat内存优化
内存优化,也就是对JVM的参数进行优化,优化的文件是
Windows 操作系统下的catalina.bat 和 Linux 操作系统下的catalina.sh,主要是对其中的 java_OPTS 参数 设置:
JAVA_OPTS参数说明 :
  -server: 启用jdk 的 server 版;
  -Xms: java虚拟机初始化时的最小内存,JVM初始化堆的大小;
  -Xmx: java虚拟机可使用的最大内存,JVM堆的最大值;
  -XX: PermSize 内存永久保留区域
  -XX: MaxPermSize 内存最大永久保留区域

  现公司服务器内存一般都可以加到最大2G ,所以可以采取以下配置:

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

  配置完成后重启Tomcat ,通过以下命令进行查看配置是否生效:
  (1)首先查看Tomcat 进程号:
  sudo lsof -i:9027
  可以看到Tomcat 进程号是 12222
  
  (2)查看是否配置生效:
  sudo jmap – heap 12222
  可以看到MaxHeapSize 等参数已经生效

二、Tomcat并发优化

  1.Tomcat连接相关参数
  在Tomcat 配置文件 server.xml 中的
  
  disableUploadTimeout="true"/>
  
(1)参数说明
  maxThreads 客户请求最大线程数 ,即最多同时处理X个连接
  minSpareThreads Tomcat 初始化时创建的 socket 线程数 ,初始化X个连接
  maxSpareThreads Tomcat 连接器的最大空闲 socket 线程数 ,表示如果最多可以有X个线程,一旦超过X个,则会关闭不在需要的线程
  enableLookups 若设为true, 则支持域名解析,可把 ip 地址解析为主机名
  redirectPort 在需要基于安全通道的场合,把客户请求转发到基于SSL 的 redirectPort 端口
  acceptAccount 监听端口队列最大数,满了之后客户请求会被拒绝同时不能小于maxSpareThreads数
  connectionTimeout 连接超时
  minProcessors 服务器创建时的最小处理线程数
  maxProcessors 服务器同时最大处理线程数
  URIEncoding URL统一编码
 
 (2)配置示例
  maxThreads="1000" minSpareThreads="100" maxSpareThreads="1000"
  minProcessors="100" maxProcessors="1000" enableLookups="false"
  URIEncoding="utf-8" acceptCount="1000" redirectPort="8443"
  disableUploadTimeout="true"/>

三、Tomcat缓存优化

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

  (2)配置示例
  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"/>

  
四、Tomcat IO优化

Tomcat通讯协议支持http1.0和1.1,默认走的是BIO通讯模式

顺便熟悉下Java中对几种IO方式:
Java BIO : 同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。
Java NIO : 同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。
Java AIO(NIO.2) : 异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理

Tomcat中IO优化的配置方法:
在server.xml中 ,将   

改为:

其中的 protocol=”org.apache.coyote.http11.Http11NioProtocol” ,表示以 NIO模式启动。

参考文章:https://blog.csdn.net/centre10/article/details/50639693

你可能感兴趣的:(服务器)