tomcat的线程模型

Posted by Clear Blog on August 10, 2017

配置 server.xml 文件当中的 修改tomcat的IO模型。 默认配置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“

异步非阻塞式IO,jdk1.7后之支持。与nio不同在于不需要多路复用选择器, 而是请求处理线程执行完程进行回调调知,已继续执行后续操作。

  • APR protocol=”org.apache.coyote.http11.Http11AprProtocol“

全称是 Apache Portable Runtime/Apache可移植运行库),是Apache HTTP服务器的支持库。 可以简单地理解为,Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作。

NIO redis-single-thread-model

名称 描述
acceptCount 等待最大队列
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  
maxSpareThreads BIO 模式下 最多线闲置线程数
maxThreads(执行线程) 最大执行线程数
minSpareThreads(初始线业务线程 10) BIO 模式下 最小线闲置线程数