3 Tomcat线程模型HTTP请求处理与管道线模型
3.1 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"
3.2 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) | 最小线闲置线程数 |
3.3 容器
只有容器才有管道线,其他组件没有
Tomcat中有四个容器,分别是Engine,Host,context,Wrapper。级别是从大到小的。context表示一个Web应用程序,Wrapper表示一个Servlet。一个Web应用程序中可能会有多个Servlet。Host代表的是一个虚拟主机,就好比你的一个Tomcat下面可能有多个Web应用程序。同时Engine是Host的父类,Host是Context的父类,Context是Wrapper父类。每层的容器都有自己的管道线。