Springboot定制Tomcat

SpringBoot内置Tomcat,在默认设置中,Tomcat的最大线程数是200,最大连接数是10000。

默认内嵌Tomcat配置


server.tomcat.accept-count:等待队列长度,当可分配的线程数全部用完之后,后续的请求将进入等待队列等待,等待队列满后则拒绝处理,默认100。
server.tomcat.max-connections:最大可被连接数,默认10000
server.tomcat.max-threads:最大工作线程数,默认200,
server.tomcat.min-spare-threads:最小工作线程数,初始化分配线程数,默认10

Http的KeepAlive请求为当我们的客户端向我们的服务器发送Http请求的时候,若带上了KeepAlive的请求头,则表明我们的Http客户端希望跟服务端之间建立一个KeepAlive的连接,这个连接对应的用处就是说,向我们的服务端发送完对应的响应之后,我们的服务端不要立马断开连接,而是等待尝试复用连接此解决方案是用来解决Http的一个响应,无状态,每次都要断开连接,新建连接所带来的一个耗时问题。
KeepAliveTimeOut:多少毫秒后客户端不响应则断开KeepAlive
maxKeepAliveRequests:多少次请求后KeepAlive断开失效


@Configuration
public class WebServerConfiguration implements WebServerFactoryCustomizer {
    @Override
    public void customize(ConfigurableWebServerFactory factory) {
        //使用对应工厂类提供给我们的接口定制化我们的tomcat connector
        ((TomcatServletWebServerFactory)factory).addConnectorCustomizers(new TomcatConnectorCustomizer() {
            @Override
            public void customize(Connector connector) {
                Http11NioProtocol protocol= (Http11NioProtocol) connector.getProtocolHandler();
                //定制KeepAliveTimeout,设置30秒内没有请求则服务器自动断开keepalive连接
                protocol.setKeepAliveTimeout(30000);
                //当客户端发送超过10000个请求则自动断开keepalive连接
                protocol.setMaxKeepAliveRequests(10000);
            }
        });
    }
}