三:Tomcat源码之线程模型HTTP请求处理与管道线模型
Posted PoetryAndTheDistance
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三:Tomcat源码之线程模型HTTP请求处理与管道线模型相关的知识,希望对你有一定的参考价值。
目录
I/O模型3:I/O 复用模型(I/O multiplexing)
Connector
蓝色框包裹的是nio的线程模型
红色标识的组件是工作线程完成io和业务处理的过程,CoyoteAdapter这个是tomcat唯一的一个适配器负责把请求从Connector发送到Engine进行业务处理
使用指定IO模型的配置方式: 配置 server.xml 文件当中的 修改即可。 默认配置 8.0 protocol=“HTTP/1.1” 8.0 之前是 BIO 8.0 之后是NIO BIO protocol=“org.apache.coyote.http11.Http11Protocol“ NIO protocol=”org.apache.coyote.http11.Http11NioProtocol“ AIO protocol=”org.apache.coyote.http11.Http11Nio2Protocol“ APR protocol=”org.apache.coyote.http11.Http11AprProtocol
Tomcat connector 并发参数解读
| 名称 | 描述 | |:----|:----| | acceptCount | 等待最大队列 | | address | 绑定客户端特定地址,127.0.0.1 | | bufferSize | 每个请求的缓冲区大小。bufferSize * maxThreads | | compression | 是否启用文档压缩 | | compressableMimeTypes | text/html,text/xml,text/plain | | connectionTimeout | 客户发起链接 到 服务端接收为止,中间最大的等待时间 | | connectionUploadTimeout | upload 情况下连接超时时间 | | disableUploadTimeout | true 则使用connectionTimeout | | enableLookups | 禁用DNS查询 true | | keepAliveTimeout | 当长链接闲置 指定时间主动关闭 链接 ,前提是客户端请求头 带上这个 head"connection" " keep-alive" | | maxKeepAliveRequests | 最大的 长连接数 | | maxHttpHeaderSize | | maxThreads(执行线程) | 最大执行线程数 | | minSpareThreads(初始线业务线程 10) |最小线闲置线程数
容器
只有容器才有管道线,其他组件没有
Tomcat中有四个容器,分别是Engine,Host,context,Wrapper。级别是从大到小的。context表示一个Web应用程序,Wrapper表示一个Servlet。一个Web应用程序中可能会有多个Servlet。Host代表的是一个虚拟主机,就好比你的一个Tomcat下面可能有多个Web应用程序。同时Engine是Host的父类,Host是Context的父类,Context是Wrapper父类。每层的容器都有自己的管道线。
tcp三次握手
BIO与NIO
网络请求响应
阻塞式 I/O 模型(blocking I/O)
非阻塞式 I/O 模型(non-blocking I/O)
I/O模型3:I/O 复用模型(I/O multiplexing)
I/O模型5:异步 I/O 模型(即AIO,全称asynchronous I/O)
以上是关于三:Tomcat源码之线程模型HTTP请求处理与管道线模型的主要内容,如果未能解决你的问题,请参考以下文章