• Tomcat的四种基于HTTP协议的Connector性能比较


    今天在osc上看到对Tomcat的四种基于HTTP协议的Connector性能比较

    具体内容如下:


    <Connector port="8081" protocol="org.apache.coyote.http11.Http11NioProtocol"                           connectionTimeout="20000" redirectPort="8443"/>
    <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000"
                   redirectPort="8443"/>
    <Connector executor="tomcatThreadPool"
                   port="8081" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />
    <Connector executor="tomcatThreadPool"
                   port="8081" protocol="org.apache.coyote.http11.Http11NioProtocol"
                   connectionTimeout="20000"
                   redirectPort="8443" />

    我们姑且把上面四种Connector按照顺序命名为 NIO, HTTP, POOL, NIOP

    为了不让其他因素影响测试结果,我们只对一个很简单的jsp页面进行测试,这个页面仅仅是输出一个Hello World。假设地址是 http://tomcat1/test.jsp

    我们依次对四种Connector进行测试,测试的客户端在另外一台机器上用ab命令来完成,测试命令为: ab -c 900 -n 2000 http://tomcat1/test.jsp ,最终的测试结果如下表所示(单位:平均每秒处理的请求数):


    NIO HTTP POOL NIOP
    281 65 208 365
    666 66 110 398
    692 65 66 263
    256 63 94 459
    440 67 145 363

    由 这五组数据不难看出,HTTP的性能是很稳定,但是也是最差的,而这种方式就是Tomcat的默认配置。NIO方式波动很大,但没有低于280 的,NIOP是在NIO的基础上加入线程池,可能是程序处理更复杂了,因此性能不见得比NIO强;而POOL方式则波动很大,测试期间和HTTP方式一 样,不时有停滞。

    由于linux的内核默认限制了最大打开文件数目是1024,因此此次并发数控制在900。

    尽管这一个结果在实际的网站中因为各方面因素导致,可能差别没这么大,例如受限于数据库的性能等等的问题。但对我们在部署网站应用时还是具有参考价值的。

    <Connector
    executor="tomcatThreadPool"
    port="8090"
    redirectPort="8443"
    protocol="org.apache.coyote.http11.Http11NioProtocol"
    compression="on"
    compressionMinSize="2048"
    enableLookups="false"
    acceptCount="1000"
    URIEncoding="UTF-8"
    connectionTimeout="40000" />
     

    连接器使用的线程池的名子:executor="tomcatThreadPool" 
    连接器端口                        :port="8090" 
    连接器使用的传输方式      :protocol="org.apache.coyote.http11.Http11NioProtocol" 
    传输时是否支持压缩          :compression="on" 
    压缩的大小                        :compressionMinSize="2048"

    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" 
            maxThreads="800" minSpareThreads="400" maxSpareThreads="700"/>

    线程池名:           name="tomcatThreadPool" 
    线程前缀:           namePrefix="catalina-exec-"
    最大产生线程数:maxThreads="800"

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

    最大初始现程数:minSpareThreads="700"

    源:Tomcat的四种基于HTTP协议的Connector性能比较

  • 相关阅读:
    UITableViewCell 获取当前位置
    iOS图片拉伸
    TCP/IP基础
    AFNetworking报错"_UTTypeCopyPreferredTagWithClass", referenced from: _AFContentTypeForPathExtens
    iOS 后台处理
    统计iOS项目的总代码行数的方法
    iOS自定义model排序
    iOS开发 适配iOS10
    中文 iOS/Mac 开发博客列表
    C#--静态构造函数
  • 原文地址:https://www.cnblogs.com/xiaoshen666/p/11118193.html
Copyright © 2020-2023  润新知