问题
怎么配置springBoot 内置tomcat,才能使得自己的服务效率更高呢?
基础配置
Spring Boot 能支持的最大并发量主要看其对Tomcat的设置,可以在配置文件中对其进行更改。我们可以看到默认设置中,Tomcat的最大线程数是200,最大连接数是10000。 这个不同SpringBoot 版本可能有所细微差别。本文测试基于Springboot 2.0.7.RELEASE
默认配置
private int maxThreads = 200;
private int minSpareThreads = 10;
private int maxHttpPostSize = 2097152;
private int maxHttpHeaderSize = 0;
private Boolean redirectContextRoot = true;
private Boolean useRelativeRedirects;
private Charset uriEncoding = StandardCharsets.UTF_8;
private int maxConnections = 10000;
private int acceptCount = 100;
测试步骤
通过我们查看源码得知了(org.springframework.boot.autoconfigure.web.ServerProperties)springBoot 内置tomcat 默认配置,现在我们为了在本地体现出效果,我们将配置参数有意调小配置如下进行压测,同时将压测接口中设置sleep(2000) 模拟线程没有释放。
tomcat:
#最小线程数
min-spare-threads: 5
#最大线程数
max-threads: 5
#最大链接数
max-connections: 5
#最大等待队列长度
accept-count: 1
该配置对应压测
通过压测100并发 发现异常达到了85% 由于我们配置ReadTimeout 和ConnectTimeout 配置2秒 100个线程同时达到,处理最大线程才1,排队也是1 导致一个是没有线程处理请求导致超时一个是排不上队别拒绝。当我按照本机cup 合理配置后看看压测情况。优化配置如下:
tomcat:
#最小线程数
min-spare-threads: 100
#最大线程数
max-threads: 600
#最大链接数
max-connections: 10000
#最大等待队列长度
accept-count: 1000
如上图 同样是100并发 异常率为0 全部通过,响应时间也是减除sleep(2000) 大多数都是10毫秒内。优化效果可见显著。
到此这篇关于SpringBoot内置tomcat调优测试优化的文章就介绍到这了,更多相关SpringBoot内置tomcat调优测试内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!