tomcat配置详解

tomcat
默认最大并发200
默认最大连接10000
maxConnections表示有多少个socket连接到tomcat上。NIO模式下默认是10000。而maxThreads则是woker线程并发处理请求的最大数
一、配置
Tomcat/conf/server.xml修改配置

<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
        redirectPort="8443"
        URIEncoding="UTF-8"
        minSpareThreads="25"
        maxSpareThreads="300"
        maxThreads="500"
        acceptCount="500"
        connectionTimeout="30000"
        enableLookups="false"/>

二、参数说明
maxIdleTime:最大空闲时间,超过这个空闲时间,且线程数大于minSpareThreads的,都会被回收,默认值1分钟(60000ms);
minSpareThreads:最小空闲线程数,任何情况都会存活的线程数,即便超过了最大空闲时间,也不会被回收,默认值4;
maxSpareThreads:最大空闲线程数,在最大空闲时间(maxIdleTime)内活跃过,此时空闲,当空闲时间大于maxIdleTime则被回收,小则继续存活,等待被调度,默认值50;
maxThreads:最大线程数,大并发请求时,tomcat能创建来处理请求的最大线程数,超过则放入请求队列中进行排队,默认值为200;
acceptCount:当最大线程数(maxThreads)被使用完时,可以放入请求队列排队个数,超过这个数返回connection refused(请求被拒绝),一般设置和maxThreads一样,不过这个具体需要根据自己的应用实际访问峰值和平均值来权衡,默认值为100;
connectionTimeout:网络连接超时,假设设置为0表示永不超时,这样设置隐患巨大,通常可设置为30000ms,默认60000ms。

protocol:tomcat三种运行模式
BIO NIO APR
这三种模式的不同之处如下:
BIO:
一个线程处理一个请求。缺点:并发量高时,线程数较多,浪费资源。
Tomcat7或以下,在Linux系统中默认使用这种方式。
NIO:
利用Java的异步IO处理,可以通过少量的线程处理大量的请求。
Tomcat8在Linux系统中默认使用这种方式。
Tomcat7必须修改Connector配置来启动:
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"

     connectionTimeout="20000" redirectPort="8443"/> 

APR:
即Apache Portable Runtime,从操作系统层面解决io阻塞问题。
Tomcat7或Tomcat8在Win7或以上的系统中启动默认使用这种方式。
Linux如果安装了apr和native,Tomcat直接启动就支持apr

tomcat8 官方文档说的很清楚了,http://tomcat.apache.org/tomcat-8.0-doc/config/http.html#NIO_specific_configuration ,protocol默认值虽是HTTP/1.1,可以自动切换:
设置协议以处理传入流量。默认值是 HTTP/1.1使用自动切换机制来选择非阻塞的基于Java NIO的连接器或基于APR / native的连接器。如果PATH(Windows)或LD_LIBRARY_PATH(在大多数unix系统上)环境变量包含Tomcat本机库,则将使用APR /本机连接器。如果找不到本机库,将使用非阻塞的基于Java的连接器。请注意,APR /本机连接器对HTTPS的设置与Java连接器不同。
要使用显式协议而不是依赖于上述自动切换机制,可以使用以下值:
org.apache.coyote.http11.Http11Protocol- 阻止Java连接器
org.apache.coyote.http11.Http11NioProtocol- 非阻塞Java NIO连接器
org.apache.coyote.http11.Http11Nio2Protocol- 非阻塞Java NIO2连接器
org.apache.coyote.http11.Http11AprProtocol- APR /本机连接器。

springboot上面的配置:
#server:
#  tomcat:
#    uri-encoding: UTF-8
#    max-threads: 1000
#    min-spare-threads: 30
Last modification:July 26th, 2019 at 07:58 pm

Leave a Comment