up:: 发现并发容量问题

说明:

上面的这些配置文件是SpringBoot暴露给tomcat配置的,而比如keepalive这种配置就没有暴露出来,我们就需要自己定制。。。 在springboot中tomcat有一些配置可以在application配置文件中配置,但是,有些不能,所以要其他方法定制tomcat


实现一个配置类

//当Spring容器内没有TomcatEmbeddedServletContainerFactory这个bean时,会吧此bean加载进spring容器中
@Component
public class WebServerConfiguration implements WebServerFactoryCustomizer<ConfigurableWebServerFactory> {
    @Override
    public void customize(ConfigurableWebServerFactory configurableWebServerFactory) {
            //使用对应工厂类提供给我们的接口定制化我们的tomcat connector
        ((TomcatServletWebServerFactory)configurableWebServerFactory).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);
            }
        });
    }
}

在持久化连接出现之前,每次访问URL都需要建立一个独立的TCP连接,会增加HTTP服务器的负载,并导致网络拥塞。

持久的HTTP连接有一些优势,例如打开与关闭的TCP连接会减少,可以减少中间经过节点的CPU时间及内存等。

spring-boot - spring-boot app的keep-alive配置 - 堆栈内存溢出