springboot中tomcat线程池

一、Tomcat中的默认配置

线程任务就是一个连接的请求,每个请求都会尝试创建线程来处理。

最大工作线程数,默认200。
server.tomcat.max-threads=200
 
最大连接数默认是10000,同时支持的并发连接数
server.tomcat.max-connections=10000
 
等待队列长度,默认100。
server.tomcat.accept-count=100
 
最小工作线程数,默认10。
server.tomcat.min-spare-threads=10

线程数的经验值为:1核2G内存,线程数经验值200;4核8G内存, 线程数经验值800。(4核8G内存单进程调度线程数800-1000,超过这个并发数之后,将会花费巨大的时间在CPU调度上)

等待队列长度:队列做缓冲池用,但也不能无限长,消耗内存,出入队列也耗CPU。

maxThreads规定的是线程池创建的最大的线程数目,相当于线程池中的最大线程数,并不是实际running的CPU数量;实际上,maxThreads的大小比CPU核心数量要大得多。这是因为,处理请求的线程真正用于计算的时间可能很少,大多数时间可能在阻塞,如等待数据库返回数据、等待硬盘读写数据等。因此,在某一时刻,只有少数的线程真正的在使用物理CPU,大多数线程都在等待;因此线程数远大于物理核心数才是合理的。也就是说,Tomcat通过使用比CPU核心数量多得多的线程数,可以使CPU忙碌起来,大大提高CPU的利用率。

minSpareThreads相当于线程池中的corePoolSize,也就是核心线程数

maxConnections指的是Tomcat一瞬间最多能够处理的并发连接数。

acceptCount是tomcat接受的连接数超过maxconnections时,还可接受的连接数,当accept队列满了之后,client可能会返回read timeout 或者 connection reset by peer(tomcat官网说的是返回connection refused)。

minSpareThreads:最小备用线程数,tomcat启动时的初始化的线程数;

 

二、NioEndpoint 对象

NioEndpoint 对象是非常重要的组件,它封装了 tomcat 的线程模型

posted on 2023-08-13 21:20  啥123  阅读(2287)  评论(0编辑  收藏  举报