三:Tomcat源码之线程模型HTTP请求处理与管道线模型

Posted PoetryAndTheDistance

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三:Tomcat源码之线程模型HTTP请求处理与管道线模型相关的知识,希望对你有一定的参考价值。

目录

Connector

Tomcat connector 并发参数解读

容器

tcp三次握手

BIO与NIO

网络请求响应

阻塞式 I/O 模型(blocking I/O)

非阻塞式 I/O 模型(non-blocking I/O)

I/O模型3:I/O 复用模型(I/O multiplexing)


Connector

蓝色框包裹的是nio的线程模型

红色标识的组件是工作线程完成io和业务处理的过程,CoyoteAdapter这个是tomcat唯一的一个适配器负责把请求从Connector发送到Engine进行业务处理

0

使用指定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父类。每层的容器都有自己的管道线。

0

tcp三次握手

0

BIO与NIO

0

网络请求响应

0

阻塞式 I/O 模型(blocking I/O)

0

非阻塞式 I/O 模型(non-blocking I/O)

0

I/O模型3:I/O 复用模型(I/O multiplexing)

0

I/O模型5:异步 I/O 模型(即AIO,全称asynchronous I/O)

0

以上是关于三:Tomcat源码之线程模型HTTP请求处理与管道线模型的主要内容,如果未能解决你的问题,请参考以下文章

tomcat 线程模型

hystrix源码之hystrix请求变量

软件架构-tomcat之线程源码熟悉通信方式(上)

tomcat的3个线程栈dump样本分析

从连接器组件看Tomcat的线程模型——连接器简介

从Tomcat的处理web请求分析Java的内存模型