首页 > 其他分享 >springboot中tomcat线程池

springboot中tomcat线程池

时间:2023-08-13 21:34:09浏览次数:38  
标签:springboot tomcat 队列 连接数 server 线程 CPU

一、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启动时的初始化的线程数;

标签:springboot,tomcat,队列,连接数,server,线程,CPU
From: https://www.cnblogs.com/zhang12345/p/17626899.html

相关文章

  • 自定义springboot-starter包
    https://www.cnblogs.com/yuansc/p/9088212.html 前言我们都知道可以使用SpringBoot快速的开发基于Spring框架的项目。由于围绕SpringBoot存在很多开箱即用的Starter依赖,使得我们在开发业务代码时能够非常方便的、不需要过多关注框架的配置,而只需要关注业务即可。例如我想......
  • c++多线程
    ......
  • springboot综合案例第四课
    day04_springboot综合案例用户管理查询用户查询所有用户执行流程编写UserMapper接口publicinterfaceUserMapper{//查询所有用户List<UserInfo>findAllUsers();}编写UserServicepublicinterfaceUserServiceextendsUserDetailsService{/**......
  • Redundant declaration: @SpringBootApplication already applies given @ComponentSc
    报错提示内容: 解决:将启动类文件移动到com.atguigu.eduservice包。应该是EduApplication.java文件自带的@SpringBootApplication中包含@ComponentScan,默认是扫描该类所在的包和子包的,即@ComponentScan(basePackages={"com.atguigu"}),所以再写一遍就提示多余的。 ......
  • 什么是线程?为什么需要线程?线程和进程的区别?
    一.线程是什么?1.1.为什么需要线程    在执行多个任务时,多进程就已经可以实现并发编程的效果了,可是却有一个明显的缺点。 缺点:进程的创建都需要大量的资源(例如:PCB、硬盘资源等),因此开销就变大了;而且创建时需要大量的资源,也是需要更多的时间,因此导致速度变慢了。解决方法......
  • 【PYQT5】创建线程,防止执行函数卡死界面
    #线程函数classWorkerThread(QThread):resultReady=pyqtSignal(object)def__init__(self,func,*args,**kwargs):super().__init__()self.func=funcself.args=argsself.kwargs=kwargsdefrun(self):se......
  • springboot统一异常处理
    1全局异常处理:先新建一个类,之后在类上面添加注解之后在类中添加方法,在方法上添加注解,指定哪个异常出现会执行2特定异常处理:把全局异常出行中的方法上面的注解变化一下就可以3自定义异常处理:第一步创建异常类,继承RuntimeException;第二步在异常类中添加属性(状态码和描述信......
  • SpringBoot的核心特性
    SpringBoot是一个用于简化Spring应用程序开发的框架,它提供了一系列核心特性,使得开发者能够更快速、更简单地构建和部署Spring应用程序。本文将详细介绍SpringBoot的五个核心特性,并为每个特性提供三个子特性的详细解释。1.独立运行的Spring应用程序SpringBoot允许开发者创建独立......
  • C#多线程环境下调用 HttpWebRequest 并发连接限制
    .net的HttpWebRequest或者 WebClient 在多线程情况下存在并发连接限制,这个限制在桌面操作系统如windowsxp,windows7下默认是2,在服务器操作系统上默认为10.如果不修改这个并发连接限制,那么客户端同时可以建立的http连接数就只有2个或10个。对于一些诸如浏览器或网络......
  • SpringBoot3集成Quartz
    目录一、简介二、工程搭建1、工程结构2、依赖管理3、数据库4、配置文件三、Quartz用法1、初始化加载2、新增任务3、更新任务4、暂停任务5、恢复任务6、执行一次7、删除任务8、任务执行四、参考源码标签:Quartz.Job.Scheduler;一、简介Quartz由Java编写的功能丰富的开源作业调度......