zoukankan      html  css  js  c++  java
  • Tomcat性能优化

    原文地址:http://www.cnblogs.com/littlehb/archive/2012/02/18/2356732.html

    每个web客户端请求对于服务器端来说就一个单独的线程,客户端的请求数量增多将会导致线程数就上去了,CPU就忙着跟线程切换。

    而NIO则是使用单线程(单个CPU)或者只使用少量的多线程(多CPU)来接受Socket,而由线程池来处理堵塞在pipe或者队列里的请求.这样的话,只要OS可以接受TCP的连接,web服务器就可以处理该请求。大大提高了web服务器的可伸缩性。


     

    大家都听说了在Apache Tomcat6 中支持了Java语言的特性 NIO( New I/O),不管你对NIO的技术是否熟悉,但你肯定能想象的到NIO是一个好东西。的确,使用NIO在服务器端会有更好的性能,加强服务器端对并发处理的 性能。  请注意:很抱歉,在tomcat6在默认的配置选项中是没有把NIO功能打开。所以很多正在使用Tomcat6的朋友们本以为能快活的使用上NIO。

    不信,你可以试试,从Apache Tomcat 站点下载 的Tomct6 压缩包中 conf/server.xml的 配置文件第69行,内容如下:

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

    进行测试,可以在控制台的启动信息里看见,默认状态下没有被打开nio配置,启动时的信息,如下:
    2010-2-1 12:59:40 org.apache.coyote.http11.Http11Protocol init
    信息: Initializing Coyote HTTP/1.1 on http-8080
    2010-2-1 12:59:40 org.apache.catalina.startup.Catalina load

    修改成支持NIO的类型,配置如下

    <Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
                   connectionTimeout="20000"
                   redirectPort="8443" />

    进行测试,被打开nio配置,启动时的信息,如下:
    2010-2-1 13:01:01 org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
    信息: Using a shared selector for servlet write/read
    2010-2-1 13:01:01 org.apache.coyote.http11.Http11NioProtocol init
    信息: Initializing Coyote HTTP/1.1 on http-8080

    这样才能让你真正体验到Tomcat6下NIO给你的系统带来的快感。

    –end–

     

     

    黄海的配置:

    <Connector port="8080"
            protocol="org.apache.coyote.http11.Http11NioProtocol"
            executor="tomcatThreadPool"
            compression="on"
            compressionMinSize="2048"
            maxThreads="30000"
            minSpareThreads="512"
            maxSpareThreads="2048"
            enableLookups="false"
            redirectPort="8443"
            acceptCount="35000"
            debug="0"
            connectionTimeout="40000"
            disableUploadTimeout="true" URIEncoding="UTF-8" useBodyEncodingForURI="true" />

    连接器使用的线程池的名子:executor="tomcatThreadPool"

    连接器端口                         :port="8090"

    连接器使用的传输方式       :protocol="org.apache.coyote.http11.Http11NioProtocol"

    传输时是否支持压缩           :compression="on"

    压缩的大小                         :compressionMinSize="2048"

    3.设置Tomcat连接器池。

    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="1000" minSpareThreads="350" />

    黄海在配置文件中添加了如下配置:

     

    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="1000" minSpareThreads="350" />

     

           线程池名:           name="tomcatThreadPool"

           线程前缀:           namePrefix="catalina-exec-"

           最大产生线程数:maxThreads="1000"

           最小初始现程数:minSpareThreads="350"

  • 相关阅读:
    Coursera机器学习week11 单元测试
    关于 TypeReference 的解释
    getModifiers 方法解释。
    instanceof isInstance isAssignableFrom 比较
    elasticsearch 基础 语法总结
    kibana 启动 关闭 和进程查找
    MD5 SHA1 SHA256 SHA512 SHA1WithRSA 的区别
    spring boot 项目 热启动
    java zip 压缩文件
    Packet for query is too large (1660 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.
  • 原文地址:https://www.cnblogs.com/chyg/p/2811603.html
Copyright © 2011-2022 走看看