tomcat的三种运行模式

tomcat

Tomcat Connector的三种不同的运行模式性能相差很大,有人测试过的结果如下: 


这三种模式的不同之处如下:

●BIO: 
 一个线程处理一个请求。缺点:并发量高时,线程数较多,浪费资源。 
Tomcat7或以下,在Linux系统中默认使用这种方式。

●NIO: 
 利用Java的异步IO处理,可以通过少量的线程处理大量的请求。 
Tomcat8在Linux系统中默认使用这种方式。 
Tomcat7必须修改Connector配置来启动:

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

●APR: 
  即Apache Portable Runtime,从操作系统层面解决io阻塞问题。 
Tomcat7或Tomcat8在Win7或以上的系统中启动默认使用这种方式。 
Linux如果安装了apr和native,Tomcat直接启动就支持apr。(安装方法:http://www.cnblogs.com/nb-blog/p/5278502.html

官方对这三种的区别的详细说明:

 
  1. Java Blocking Connector Java Nio Blocking Connector APR/native Connector
  2. BIO NIO APR
  3. Classname AjpProtocol AjpNioProtocol AjpAprProtocol
  4. Tomcat Version 3.x onwards 7.x onwards 5.5.x onwards
  5. Support Polling NO YES YES
  6. Polling Size N/A maxConnections maxConnections
  7. Read Request Headers Blocking Sim Blocking Blocking
  8. Read Request Body Blocking Sim Blocking Blocking
  9. Write Response Blocking Sim Blocking Blocking
  10. Wait for next Request Blocking Non Blocking Non Blocking
  11. Max Connections maxConnections maxConnections maxConnections

Tomcat启动的时候,可以通过log看到Connector使用的是哪一种运行模式:

 
  1. Starting ProtocolHandler ["http-bio-8080"]
  2. Starting ProtocolHandler ["http-nio-8080"]
  3. Starting ProtocolHandler ["http-apr-8080"]

例如:

本文参考社区文章

最新文章

  1. JS策略模式
  2. XSS攻击及防御
  3. [Asp.net 5] DependencyInjection项目代码分析4-微软的实现(4)
  4. Bootstrap学习笔记系列2-------Bootstrap简单表格处理
  5. 如何更改UITextField 的placeholder 的字体颜色
  6. leveldb源码分析—Recover和Repair
  7. 转!Java关键字final、static使用总结
  8. Bone.io是一个轻量级的框架构建高性能实时单页HTML5应用程序
  9. java反射知识
  10. C#中接口和方法的运用(Fourteenth Day)
  11. UNIX网络编程卷1 时间获取程序server TCP 协议相关性
  12. leetcode第一刷_Minimum Path Sum
  13. Android自学反思总结(中)
  14. C语言--字符串和数字的相互转换
  15. java并发包分析之———volitale
  16. openjduge 求简单表达式的值
  17. zabbix3.4.6之监控Oracle
  18. springboot集成druid+mybatis连接oracle数据库
  19. 附加任务:团队作业7 Alpha冲刺
  20. apt 下载安装包

热门文章

  1. nodejs的process.on(&#39;message&#39;)转promise
  2. oracle12c之四 控制PDB操作 PDBLockdown Profiles
  3. 解决 jenkins 下使用 HTML Publisher 插件后查看 html 报告显示不正常
  4. Fiddler使用一(Fiddler简介)
  5. Flyway-使用步骤
  6. Objective-C中.h、.m、.mm的区别
  7. MySql的索引操作
  8. Gradient Optimization
  9. JDK12 concurrenthashmap源码阅读
  10. 初步理解impress.js