tomcat优化

  tomcat的性能的优化是一个综合性的技术。对于tomcat默认的参数配置,它只适用于开发环境,并不适用于生产环境;一般针对生产环境tomcat服务器的配置主要从以下几个方面来考虑:

1. tomcat的内存优化(JVM参数调优)

   

2. tomcat线程池的优化

<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8081" protocol="HTTP/1.1" redirectPort="8443" 
  maxThreads
="600" minSpareThreads="100" maxSpareThreads="500" acceptCount="700"/>

  maxThreads : 最大处理请求的线程数。

  minSpareThreads : 初始化时创建的线程数。

  maxSpareThreads : 一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。

  acceptCount : 指定当所有的处理请求的线程都被使用时,可以放到请求等待处理队列中的请求数,超过这个数的请求将不予处理。

  connnectionTimeout : 网络连接超时,单位:毫秒。设置为0表示永不超时。

  因为tomcat可以配置多个 Connector ,所以tomcat的线程池配置,支持多个Connector共享一个线程池:

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="20" maxIdleTime="60000"/>

  最大线程数为500,最小空闲线程数为20,线程最大空闲时间为60s。

  然后,修改Connector节点,增加executor属性,executor设置为线程池的名字:

<Connector executor="tomcatThreadPool" URIEncoding="UTF-8" connectionTimeout="20000" port="8081" protocol="HTTP/1.1" redirectPort="8443" keepAliveTimeout="20000" maxKeepAliveRequests="1"/>

   keepAliveTimeout : 长连接最大保持时间,默认值和connectionTimeout是一样的,单位为毫秒。tomcat中默认是打开持久连接的,如果想关闭它,只需要将maxKeepAliveRequests设为1就行啦。

  maxKeepAliveRequests : 表示该连接最大支持的请求数。超过该请求数的连接就将被关闭(此时就会返回一个Connection: close头给客户端)。

3. 对于web项目中的静态页面以及图片的缓存及压缩

   一般是结合代理服务器(nginx)做静态页面的缓存,使用一些压缩技术来处理上传的图片,达到减轻网络传输的压力。

4. 优化tomcat性能需要优化对于DB的长连接的问题

   这个主要是针对DB的优化了,首先是打开DB的慢查询日志,优化慢查询,其次是针对数据库做其他方面的优化,主要是从数据库表的设计、索引的使用、分表分区技术的应用、数据库集群及读写分离、数据库配置优化、数据库服务器的硬件升级、定期清除不需要的数据等方面着手优化,这里就不做详细介绍了。

5. 使用APR插件来提升tomcat的性能

   tomcat有三种connector运行模式,分别是:

  1) BIO

  这种是默认的运行模式,性能十分的低下,没有经过任何的优化处理和支持。

  2) NIO

  这种模式是利用了java的异步IO技术,no blocking IO技术。

  想运行这种模式,直接修改server.xml里的Connector节点的protocol:

<Connector port="80" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" 
  URIEncoding
="UTF-8" enableLookups="false" redirectPort="8443"/>

  3) APR

  这种模式安装起来比较的困难,但是从操作系统级别来解决异步的IO问题,可以大幅度的提高性能。这种模式同NIO模式一样,修改protocol为org.apache.coyote.http11.Http11AprProtocol,直接启动即可(使用之前是需要先安装APR的哦)。

6. 使用集群、做负载均衡

  

原文地址:https://www.cnblogs.com/wy2185/p/5772883.html