当前位置:首页 > Web开发 > 正文

工作线程调成800

2024-03-31 Web开发

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长连接实战(二)

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/31699.html