zoukankan      html  css  js  c++  java
  • http1.1长连接实战(二)

    实验:

    client(apache httpclient) -> springboot(tomcat8 8081端口)

    client 300线程, 每线程请求1000次,共30万request 。client 连接池用的fluent api默认最大连接数200(每route100)

    tomcat 用的springboot内嵌的,默认最大接受连接数1万,工作线程调成800, 单连接maxKeepAliveRequest 调成1万,keepAliveTimeout用的默认的60s(与connectionTimeout一样)

    现象:

      TCP数280+  ,time_wait约为0,8081端口TCP数约为200, 在测试过程中段,以上数值保持稳定。

    结论:

      30万个请求,一直复用的200个长连接与tomcat进行通讯,

       如果将maxKeepAliveRequest改成默认的100的话,那么200连接与tomcat通讯100次之后,会被tomcat关闭而进入time_wait状态,time_wait约为950,8081端口TCP数约为1200,总TCP数约1200, 在测试过程中段,以上数值保持稳定。  推测约有10次被关闭的100连接进入time_wait状态。

    调整springboot的maxKeepAliveRequest的代码:

    @Configuration
    public class TomcatConfig {
        @Bean
        public EmbeddedServletContainerFactory servletContainerFactory() {
            TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
    
            factory.addConnectorCustomizers(connector ->
                    ((AbstractHttp11Protocol) connector.getProtocolHandler()).setMaxKeepAliveRequests(10000));
    
            return factory;
        }
    }
  • 相关阅读:
    Android SDK 国内镜像及配置方法
    Python多线程学习
    JProfiler 8下载地址和注册码
    Python自动化测试工具Splinter简介和使用实例
    linux系统新建用户ssh远程登陆显示-bash-4.1$解决方法
    Linux系统安装VMware Tools
    CentOS minimal网络设置
    接口测试之webservice
    VirtualBox-Linux系统安装增强功能
    PhantomJS快速入门
  • 原文地址:https://www.cnblogs.com/lyhero11/p/12183436.html
Copyright © 2011-2022 走看看