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"

  • 相关阅读:
    cookie处理函数练习(为我所写,非我所想:改善面向对象)
    TypeScript的4种编译方式
    如何调用外部的Web API
    Json to JObject转换的使用方法
    Json.NET读取和写入Json文件
    XTemplate语法基础
    node.js xtemplate的使用实例
    node.js express安装及示例网站搭建
    各大互联网公司前端面试题(HTML/CSS)
    各大互联网公司前端面试题
  • 原文地址:https://www.cnblogs.com/chyg/p/2811603.html
Copyright © 2011-2022 走看看