ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

http1.1长连接实战(二)

2020-01-12 18:54:52  阅读:298  来源: 互联网

标签:实战 http1.1 tomcat 200 TCP 线程 time 连接 wait


实验:

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;
    }
}

 

标签:实战,http1.1,tomcat,200,TCP,线程,time,连接,wait
来源: https://www.cnblogs.com/lyhero11/p/12183436.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有