Tomcat的四种Connector性能比较

Tomcat的四种Connector性能比较 

Tomcat支持以下四种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.尽管这一个结果在实际的网站中因为各方面因素导致,可能差别没这么大,例如受限于数据库的性能等等的问题.但对我们在部署网站应用时还是具有参考价值的.

我们来看一下配置,你只需要在server.xml里把HTTP Connector做如下更改,

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

然后启动服务器,你会看到org.apache.coyote.http11.Http11NioProtocol start的信息,表示NIO已经启动.其他的配置请参考官方配置文档.参考文档:http://tomcat.apache.org/tomcat-6.0-doc/config/

 

<think> 我们被要求回答关于Tomcat配置多个Connector Port的方法和使用场景的问题。根据提供的引用,我们可以整合信息如下: 引用[1]展示了Tomcat请求处理链路,其中Connector是请求进入的第一站(通过ServerSocketChannel.accept()等)。引用[3]提到Tomcat支持不同的网络协议(如HTTP/1.1和AJP/1.3),并可通过protocol属性配置。引用[4]则给出了一个Connector配置的具体示例,展示了多个属性(如port、protocol等)的设置。 在Tomcat中配置多个Connector Port的方法是:在`server.xml`文件中添加多个`<Connector>`元素,每个元素配置不同的端口(port属性)以及可能的其他属性(如协议、线程池设置等)。 使用场景包括: 1. 同时支持不同协议:例如,一个Connector监听8080端口处理HTTP请求,另一个Connector监听8009端口处理AJP请求(通常用于与前端Web服务器如Apache HTTPD集成)。 2. 不同网络接口:可以在同一个Tomcat实例上配置多个Connector,分别监听不同的IP地址或端口,以实现对不同来源请求的分离处理。 3. 不同配置的Connector:例如,一个Connector配置为NIO(非阻塞I/O)处理普通请求,另一个配置为APR(Apache Portable Runtime)以利用操作系统特性提升性能。 4. 安全隔离:将管理端口(如用于JMX)与应用端口分离,或者将内部通信端口与外部访问端口分离。 下面我们给出一个配置示例(参考引用[4]的格式): ```xml <!-- 第一个Connector:HTTP协议,监听8080端口 --> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <!-- 第二个Connector:AJP协议,监听8009端口 --> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> ``` 注意:每个Connector必须使用不同的端口号。 此外,引用[4]还提到了一些配置属性,如maxThreads(最大线程数)、acceptCount(等待队列长度)等,在实际配置多个Connector时,可以根据需要分别设置这些参数以优化不同连接器的性能。 相关问题: 1. 如何配置Tomcat Connector以支持HTTPS? 2. TomcatConnector的NIO、BIO和APR模式有何区别? 3. 多个Connector之间如何共享线程池? 4. 在负载均衡环境下,TomcatConnector配置有哪些注意事项? </think> ### Tomcat配置多个Connector Port的方法和使用场景 #### 一、配置方法 在Tomcat的`conf/server.xml`文件中添加多个`<Connector>`标签即可实现多端口配置,每个标签需设置不同的`port`属性和必要参数。典型配置示例如下: ```xml <!-- HTTP/1.1 Connector (默认) --> <Connector port="8080" protocol="HTTP/1.1" maxThreads="200" connectionTimeout="20000" redirectPort="8443" /> <!-- AJP Connector (用于Apache集成) --> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> <!-- 第二个HTTP Connector (NIO模式) --> <Connector port="9080" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" acceptorThreadCount="2" pollerThreadCount="4" connectionTimeout="30000" /> ``` **关键配置参数**: 1. `port`:必须唯一的监听端口(如8080/8009) 2. `protocol`:指定协议类型(HTTP/1.1, AJP/1.3等) 3. `maxThreads`:最大工作线程数(默认200) 4. `acceptCount`:等待队列长度(建议100-1000)[^4] 5. `acceptorThreadCount`:接收线程数(NIO优化参数)[^4] #### 二、核心使用场景 1. **协议分离场景** - HTTP端口(8080):处理终端用户请求 - AJP端口(8009):连接前端Web服务器(如Apache/Nginx)[^3] - *优势*:实现动静分离,提升安全性和性能 2. **业务隔离场景** - 主业务端口(8080):常规用户访问 - 管理端口(8081):部署管理控制台/监控接口 - *优势*:避免管理操作影响生产流量 3. **负载均衡场景** - 多HTTP端口(8080/9080):配合负载均衡器实现流量分发 - *配置示例*: ```xml <Connector port="8080" protocol="HTTP/1.1" ... /> <Connector port="9080" protocol="HTTP/1.1" ... /> ``` - *优势*:避免单端口瓶颈,提高并发能力[^4] 4. **协议升级过渡** - 旧协议端口(8080):HTTP/1.1 - 新协议端口(8443):HTTP/2 - *优势*:支持渐进式协议升级 #### 三、性能优化建议 1. **线程模型差异化配置**: - 高并发端口:采用NIO模式(`Http11NioProtocol`)[^4] - 低延迟端口:配置更多poller线程 (`pollerThreadCount`) 2. **连接参数调整**: ```xml <Connector acceptCount="1024" <!-- 等待队列深度 --> maxConnections="10000" <!-- 最大连接数 --> keepAliveTimeout="60000" <!-- 长连接超时 --> maxKeepAliveRequests="100" /> ``` 3. **安全隔离**:通过防火墙限制管理端口的访问源IP #### 四、注意事项 1. 端口冲突检查:确保所有`port`值在系统中唯一 2. 协议兼容性:AJP协议需前端Web服务器配合[^3] 3. 内存消耗:每增加一个Connector需额外分配约50MB内存 4. 监控需求:多端口需独立监控连接数(`netstat -an | grep <PORT>`) > 配置修改后需重启Tomcat生效,生产环境建议通过`tomcat-jdbc`连接池验证多端口稳定性[^1][^4]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值