- 浏览: 189991 次
- 性别:
- 来自: 上海
文章分类
最新评论
今天在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"
转自https://www.cnblogs.com/sunxucool/archive/2013/07/31/3227366.html
具体内容如下:
<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"
转自https://www.cnblogs.com/sunxucool/archive/2013/07/31/3227366.html
发表评论
-
Jetty项目简介
2016-11-07 11:28 446jetty是一个开源、基于标准、全功能实现的Java服务器。它 ... -
windows7 64位下git和tortoisegit的安装和使用
2016-09-08 11:35 1559git https://github.com/git-for- ... -
ActiveMQ的集群多种部署方式
2016-08-15 16:56 679ActiveMQ的多种部署方式 ... -
待查看
2016-08-02 09:41 4061tair 2 tddl 3hsf 4 分库分表 pmd ... -
redis 原理
2016-07-10 14:50 8371 什么是redis redis是一个key-value存储 ... -
mybatis 帮助文档
2016-04-22 11:01 509http://www.mybatis.org/mybatis- ... -
Zabbix 监控
2016-04-11 09:54 428 -
jvm实时监控工具
2016-04-09 09:35 469 -
redis学习(java调用方式)
2016-04-07 17:56 488【redis数据结构 – 简介 ... -
SonarQube代码质量管理平台安装与使用
2016-03-21 16:13 513代码质量管理工具 http://blog.csdn.net/h ... -
jboss web服务器
2016-03-17 14:15 446 -
cat监控
2016-03-16 15:22 485 -
activeMq分发策略,请求应答
2016-02-16 10:41 700 -
Eclipse下使用TODO的方法
2016-01-22 13:48 803下面是在Eclipse下使用TODO的方法。 ------- ... -
zookeeper
2015-12-07 20:29 431zookeeper -
Xshell会话共享实现多台服务器同步操作
2015-11-30 17:50 25271. 打开终端Xshell, 菜单栏View -> 勾 ... -
Tomcat出现 PermGen space解决方案
2015-06-10 16:06 343PermGen space的全称是Permanent Gene ... -
eclipse 代码注释项
2015-06-09 09:03 485comments files:新建文件时候的文件注释,在pac ... -
跨数据库事务研究
2015-05-12 11:16 871两种方案: 1、分布式 ... -
nginx
2015-04-22 11:03 470一、Nginx反向代理 正向 ...
相关推荐
`Connector`是Tomcat的Catalina核心模块的一部分,它通过一个特定的协议(如HTTP/1.1或AJP)监听客户端的请求,并将这些请求转化为内部可处理的格式,然后传递给`Container`(通常是`Engine`、`Host`和`Context`)...
AJP Connector, 基于AJP协议,AJP是专门设计用来为tomcat与http服务器之间通信专门定制的协议,能提供较高的通信速度和效率。如与Apache服务器集成时,采用这个协议。 APR HTTP Connector, 用C实现,通过JNI调用...
HTTP(Hypertext Transfer Protocol)超文本传输协议是互联网上应用最广泛的一种网络协议。它是客户端浏览器和其他任何可以发送或接收数据的客户端应用程序与Web服务器之间通信的标准。HTTP协议基于TCP/IP协议,工作...
APR协议的Connector利用本地库,能够提供更好的性能,特别是在高并发环境下,它更适合运行需要高性能的Web应用。 在server.xml配置文件中,<Connector>元素的protocol属性可以指定Connector使用的协议。如果没有...
AJP Connector, 基于AJP协议,AJP是专门设计用来为tomcat与http服务器之间通信专门定制的协议,能提供较高的通信速度和效率。如与Apache服务器集成时,采用这个协议。 APR HTTP Connector, 用C实现,通过JNI...
- AJP协议:AJP是Apache与Tomcat之间通信的协议,基于socket,可实现负载均衡,通过权数和算法分配请求。 3. Tomcat运行模式 - BIO(Blocking I/O):默认模式,性能较低,每个请求对应一个线程,高并发时资源...
总的来说,`Connector`是Tomcat中连接客户端和Servlet容器的桥梁,它实现了网络通信的基本功能,包括TCP/IP连接的建立、HTTP协议的解析以及请求的转发和响应的发送。通过灵活配置`Connector`,可以适应不同的网络...
Tomcat采用了一种基于组件的模块化架构设计,主要由以下几部分组成: - **Connector**:负责监听客户端请求并将它们传递给Container处理。 - **Container**:容器负责处理具体的Web应用程序。在Tomcat中,Container...
【标题】"Tomcat5/tomcat5.5安装包" 涵盖了两个不同版本的Apache Tomcat服务器,即Tomcat 5.0和Tomcat 5.5。Tomcat是一个开源的、免费的应用服务器,主要用于部署和运行Java Servlets和JavaServer Pages(JSP)。它...
了解和正确配置Tomcat的Connector组件对于提升Tomcat服务器的性能和稳定性至关重要。 Connector组件可以支持不同的协议,包括HTTP/1.1、AJP等。其中HTTP/1.1 Connector是处理Web请求的主要协议。它不仅能处理...
Tomcat的设计遵循了Servlet容器的基本规范,主要包括四个核心组件:Catalina(核心处理引擎)、Jasper(JSP编译器)、 Coyote(HTTP协议处理)和Juli(日志系统)。Catalina负责处理请求和响应,Jasper负责JSP的预...
- 通过调整`conf/server.xml`中的`Connector`元素,可以优化连接器配置,例如启用或禁用NIO、APR等协议。 - 使用JVM参数调整内存分配、垃圾回收策略等,以提升性能。 7. **安全性** - 在`conf/server.xml`中配置...
2. **Reverse Proxy 方式**:使用 `mod_proxy` 和 `mod_proxy_http`,将 Apache 配置为反向代理,适用于 HTTP/HTTPS 协议,可以将请求直接转发给 Tomcat 的 HTTP Connector。 #### 总结 Apache 和 Tomcat 的结合...
通过阅读《深度剖析Tomcat》中文版和源码,可以更深入地理解Tomcat的内部运作机制,这对于开发、调试和优化基于Tomcat的Web应用具有极大的帮助。书中的案例和源码分析能帮助开发者解决实际问题,提高工作效率。
Tomcat是基于Sun Microsystems(现为Oracle)的Java Servlet和JavaServer Pages(JSP)技术标准的实现。它是一个轻量级、高性能且易用的应用服务器,广泛应用于各种规模的企业和开发者。 源码学习对于理解Tomcat的...
Tomcat 9.2.3是Tomcat 9系列的一个关键更新,它基于Java EE 8规范,提供了对最新JSP、Servlet和WebSocket API的支持。此版本的主要改进包括错误修复、性能提升和安全增强,为开发者提供了一个更加稳定可靠的运行环境...
9. **WebSocket支持**:Tomcat 7.0开始支持WebSocket协议,这是一种双向通信协议,允许服务器和客户端之间实时、低延迟地交换数据。 10. **性能优化**:Tomcat 7.0对内存管理、线程池和垃圾回收进行了优化,提升了...
7. **连接器(Connector)**:Tomcat支持多种协议,如HTTP/1.1、AJP等。`Coyote`组件负责处理这些协议,其中` CoyoteConnector`是核心部分。 8. **JSP和 Jasper**:Tomcat内置了JSP引擎Jasper,负责编译JSP页面为...
- **AJP Connector**:基于AJP(Apache JServ Protocol)协议,专为Tomcat与其他HTTP服务器(如Apache)间通信设计,具有高速传输效率。 - **APR (Apache Portable Runtime) HTTP Connector**:C语言实现,通过JNI...