zoukankan      html  css  js  c++  java
  • 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. 使用集群、做负载均衡

      

  • 相关阅读:
    proxy
    javascript作用域链
    javascript技巧
    for of
    ES6模块与CommonJS模块有什么区别?
    DOM
    defer和async的区别
    浏览器如何解析css选择器?
    你是如何理解Vue的响应式系统的
    信息安全系统设计基础第十二周学习总结
  • 原文地址:https://www.cnblogs.com/wy2185/p/5772883.html
Copyright © 2011-2022 走看看