首页 > 其他分享 >SpringBoot可以同时处理多少请求?

SpringBoot可以同时处理多少请求?

时间:2024-02-05 17:22:24浏览次数:22  
标签:SpringBoot Tomcat 处理 max server tomcat 请求

正文

我们都知道,SpringBoot默认的内嵌容器是Tomcat,也就是我们的程序实际上是运行在Tomcat里的。所以与其说SpringBoot可以处理多少请求,到不如说Tomcat可以处理多少请求。

关于Tomcat的默认配置,都在spring-configuration-metadata.json文件中,对应的配置类则是org.springframework.boot.autoconfigure.web.ServerProperties

和处理请求数量相关的参数有四个(大家可以在json文件里面找一下):

  • server.tomcat.threads.min-spare:最少的工作线程数,默认是10。该参数相当于长期工,如果并发请求的数量达不到10,就会依次使用这几个线程去处理请求。
  • server.tomcat.threads.max:最多的工作线程数,默认是200。该参数相当于临时工,如果并发请求的数量在10到200之间,就会使用这些临时工线程进行处理。
  • server.tomcat.max-connections:最大连接数,默认是8192。表示Tomcat可以处理的最大请求数量,超过8192的请求就会被放入到等待队列。
  • server.tomcat.accept-count:等待队列的长度,默认是100。

举个例子说明一下这几个参数之间的关系:

如果把Tomcat好比作一家餐厅的话,那么一个请求其实就相当于一位顾客。参数如上图的表示。来的顾客优先坐到饭店里面,然后厨师开始忙活,如果长期工可以干的完,就让长期工干,如果长期工干不完,就再让临时工干。图中画的厨师一共15人,餐厅里有50个座位,也就是说,如果现在来了20个客人,那么就会有5个人先在饭店里等着。如果现在来了55个人,饭店里坐不下,就会让5个人先到门口坐一下。如果来了70个人,那么饭店座位+门口小板凳一共60个,所以就会有10人离开。

也就是说,SpringBoot同时所能处理的最大请求数量是max-connections+accept-count,超过该数量的请求直接就会被丢掉。

总结:如果并发请求数量低于server.tomcat.threads.max,则会被立即处理,超过的部分会先进行等待,如果数量超过max-connections与accept-count之和,则多余的部分则会被直接丢弃。

标签:SpringBoot,Tomcat,处理,max,server,tomcat,请求
From: https://www.cnblogs.com/uuuuZhang/p/18008316

相关文章

  • Python在处理飞书下载二进制文件时转换的问题
    最近在使用飞书,想通过接口来下载飞书文档https://open.feishu.cn/api-explorer/cli_a5049e070838d00c?apiName=download发现无法将二进制流转换为文件后来发现其文档有一些谬误,文档上写的是response.text实际写入二进制文件需要的是response.content#发起下载请求,拿到文......
  • .net CPU和内存爆高的分析与处理01
    一、问题现象从截图现象看,应用程序CPU和内存都上去了。并且还是导致程序崩溃了。这时我想到了在老师(一线码农)那里学到的分析办法,先抓取一个Dump。然后仔细分析。二、分析Dump通过Address-summary命令,查看内存确实偏高,并且都在托管堆中。2.1确认CPU是否真的存在跑高的的现......
  • Java-09异常处理
    tip:[start]异常处理可以允许我们在程序运行时进行诊断和补救。——闫学灿tip:[end]Error与Exception的区别Error是程序无法处理的错误,比如OutOfMemoryError、ThreadDeath等。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止。此类异常是程序的致命异常,是无法捕获处理的。......
  • spring-boot-maven-plugin maven-compiler-plugin springboot demo
     <build><finalName>${project.artifactId}</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-......
  • Eralng 学习笔记第五天, 异常,宏,头文件,预处理器,模式匹配
    Erlang异常在Erlang中,有3种例外类型-Error−调用将终止当前进程的执行,并在捕获到最后一个函数及其参数时包含堆栈跟踪。这些是引发上述运行时错误的异常。erlang:error(Reason)Exists −有两种Exists:内部退出和外部退出。内部退出通过调用函数exit/1来触发,并使当前进......
  • springboot之ImportBeanDefinitionRegistrar动态注入
    SpringBoot中的使用在SpringBoot内置容器的相关自动配置中有一个ServletWebServerFactoryAutoConfiguration类。该类的部分代码如下:@Configuration(proxyBeanMethods=false)@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE)@ConditionalOnClass(ServletRequest.class)@Con......
  • 技术人员核心能力 -- 危机处理能力
    工作生活中难免会遇到一些非常重大的危机、出现重大致命的BUG、如何面对?如何处理?如何化解危机?如何复盘?如何防止相同的事情重复发生?建立什么样的机制?定什么规章制度?     如何应对危机?如何高效率沟通协调?危机应对的多了处理经验也更丰富了、也不会怕遇到任何危机了、......
  • 在 Effect 中直接请求数据很容易导致“网络瀑布”。当你渲染父组件时,它会请求一些数据
    在Effect中直接请求数据很容易导致“网络瀑布”。当你渲染父组件时,它会请求一些数据,再渲染子组件,然后重复这样的过程来请求子组件的数据。如果网络不是很快,这将比并行请求所有数据要慢得多。如何理解?在React中,当我们在Effect(例如useEffectHook)中直接请求数据时,如果数据请求......
  • 数据量大导致接口请求超时
    问题场景某个接口因数据量过大导致请求超时,报错NetworkError。解决办法webpack默认2分钟后请求超时,更改vue.config.js配置如下://修改webpack默认2分钟的超时proxyTimeout:10*60*1000,onProxyReq:(proxyReq,req,res)=>req.setTime......
  • 获取请求ip
    publicstaticStringgetUserIp(HttpServletRequestrequest){if(ObjectUtils.isEmpty(request)){returnnull;}//获取客户端前台IP进行解析StringuserIp=request.getHeader("x-forwarded-for");if(userIp==null||userIp.isEmpty......