Springboot内置Tomcat配置调优实战

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Springboot内置Tomcat配置调优实战相关的知识,希望对你有一定的参考价值。

参考技术A

Tomcat的 maxConnections、maxThreads、acceptCount 三大配置,分别表示最大连接数,最大线程数、最大的等待数,可以通过application.yml配置文件来改变这个三个值.

# tomcat 8

# tomcat 9

1、accept-count:最大等待数

官方文档:当所有的请求处理线程都在使用时,所能接收的连接请求的队列的最大长度。当队列 已满时 ,任何的连接请求都将 被拒绝 。accept-count的默认值为100。

详细的来说:当调用HTTP请求数达到tomcat的最大线程数时,还有新的HTTP请求到来,这时tomcat会将该请求放在等待队列中,这个acceptCount就是指能够接受的最大等待数,默认100。如果等待队列也被放满了,这个时候再来新的请求就会被tomcat拒绝(connection refused)。

2、maxThreads:最大线程数

每一次HTTP请求到达Web服务,tomcat都会创建一个线程来处理该请求,那么最大线程数 决定了Web服务容器可以同时处理多少个请求 。maxThreads默认200,肯定建议增加。但是,增加线程是有成本的,更多的线程,不仅仅会带来更多的线程上下文切换的成本,而且意味着带来更多的内存消耗。JVM中默认情况下在创建新线程时会分配大小为1M的线程栈,所以,更多的线程异味着需要更多的内存。

线程数的经验值为 :1核2g内存为200,线程数经验值200;4核8g内存,线程数经验值800。

3、maxConnections:最大连接数

官方文档:

这个参数是指在同一时间, tomcat能够接受的最大连接数 。对于Java的阻塞式BIO,默认值是maxthreads的值;如果在BIO模式使用定制的Executor执行器,默认值将是执行器中maxthreads的值。对于Java 新的NIO模式,maxConnections 默认值是10000。

对于windows上APR/native IO模式,maxConnections默认值为8192,这是出于性能原因,如果配置的值不是1024的倍数,maxConnections 的实际值将减少到1024的最大倍数。

如果设置为-1,则禁用maxconnections功能,表示不限制tomcat容器的连接数。

maxConnections和accept-count的关系为:当连接数达到最大值maxConnections后,系统 会继续接收连接 ,但 不会超过acceptCount的值

以上是关于Springboot内置Tomcat配置调优实战的主要内容,如果未能解决你的问题,请参考以下文章

springboot配置tomcat内存

SpringBoot 内置 Tomcat 线程数优化配置,你学会了吗?

springBoot学习笔记内嵌tomcat和springmvc

springBoot学习笔记内嵌tomcat和springmvc

springboot内置tomcat线程池设置无效

Tomcat调优——实战