首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
harrycoding
青岛科技大学 Java
发布于河北
关注
已关注
取消关注
学到了
@已删除:
SpringBoot可以同时处理多少请求?
前言前两天面试的时候,面试官问我:一个ip发请求过来,是一个ip对应一个线程吗?我突然愣住了,对于SpringBoot如何处理请求好像从来没仔细思考过,所以面试结束后就仔细研究了一番,现在就来探讨一下这个问题。正文我们都知道,SpringBoot默认的内嵌容器是Tomcat,也就是我们的程序实际上是运行在Tomcat里的。所以与其说SpringBoot可以处理多少请求,到不如说Tomcat可以处理多少请求。关于Tomcat的默认配置,都在spring-configuration-metadata.json文件中,对应的配置类则是org.springframework.boot.autoconfigure.web.ServerProperties。和处理请求数量相关的参数有四个: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比作一家饭店的话,那么一个请求其实就相当于一位客人。min-spare就是厨师(长期工);max是厨师总数(长期工+临时工);max-connections就是饭店里的座位数量;accept-count是门口小板凳的数量。来的客人优先坐到饭店里面,然后厨师开始忙活,如果长期工可以干的完,就让长期工干,如果长期工干不完,就再让临时工干。图中画的厨师一共15人,饭店里有30个座位,也就是说,如果现在来了20个客人,那么就会有5个人先在饭店里等着。如果现在来了35个人,饭店里坐不下,就会让5个人先到门口坐一下。如果来了50个人,那么饭店座位+门口小板凳一共40个,所以就会有10人离开。也就是说,SpringBoot同时所能处理的最大请求数量是max-connections+accept-count,超过该数量的请求直接就会被丢掉。纸上得来终觉浅,绝知此事要躬行。上面只是理论结果,现在通过一个实际的小例子来演示一下到底是不是这样:创建一个SpringBoot的项目,在application.yml里配置一下这几个参数,因为默认的数量太大,不好测试,所以配小一点: server: tomcat: threads: # 最少线程数 min-spare: 10 # 最多线程数 max: 15 # 最大连接数 max-connections: 30 # 最大等待数 accept-count: 10再来写一个简单的接口: @GetMapping("/test") public Response test1(HttpServletRequest request) throws Exception { log.info("ip:{},线程:{}", request.getRemoteAddr(), Thread.currentThread().getName()); Thread.sleep(500); return Response.buildSuccess(); }代码很简单,只是打印了一下线程名,然后休眠0.5秒,这样肯定会导致部分请求处理一次性处理不了而进入到等待队列。然后我用Apifox创建了一个测试用例,去模拟100个请求:观察一下测试结果:从结果中可以看出,由于设置的 max-connections+accept-count 的和是40,所以有60个请求会被丢弃,这和我们的预期是相符的。由于最大线程是15,也就是有25个请求会先等待,等前15个处理完了再处理15个,最后在处理10个,也就是将40个请求分成了15,15,10这样三批进行处理。再从控制台的打印日志可以看到,线程的最大编号是15,这也印证了前面的想法。总结一下:如果并发请求数量低于server.tomcat.threads.max,则会被立即处理,超过的部分会先进行等待,如果数量超过max-connections与accept-count之和,则多余的部分则会被直接丢弃。延伸:并发问题是如何产生的到目前为止,就已经搞明白了SpringBoot可以同时处理多少请求的问题。但是在这里我还想基于上面的例子再延伸一下,就是为什么并发场景下会出现一些值和我们预期的不一样?设想有以下场景:厨师们用一个账本记录一共做了多少道菜,每个厨师做完菜都记录一下,每次记录都是将账本上的数字先抄到草稿纸上,计算x+1等于多少,然后将计算的结果写回到账本上。Spring容器中的Bean默认是单例的,也就是说,处理请求的Controller、Service实例就只有一份。在并发场景下,将cookSum定义为全局变量,是所有线程共享的,当一个线程读到了cookSum=20,然后计算,写回前另一个线程也读到是20,两个线程都加1后写回,最终cookSum就变成了21,但是实际上应该是22,因为加了两次。 private int cookSum = 0; @GetMapping("/test") public Response test1(HttpServletRequest request) throws Exception { // 做菜。。。。。。 cookSum += 1; log.info("做了{}道菜", cookSum); Thread.sleep(500); return Response.buildSuccess(); }如果要避免这样的情况发生,就涉及到加锁的问题了,就不在这里讨论了。
点赞 84
评论 8
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
04-10 14:40
郑州大学 Java
可以给暑期失败者支个招吗
如题,希望大佬们可以给鼠鼠指条明路暑期情况上文已经写了目前情况,在投递日常但没回响,最后几个暑期也投了/更新ai项目还很浅我还在完善,但硬答感觉复习一下可以答了,我这个是rag,但什么多agent我感觉我接触不到还能找到中大厂的实习吗没工作真的很可怕,这就是小秋招
点赞
评论
收藏
分享
04-07 16:16
苏州百年职业学院 HRBP
入门AI,第一步是用起来,不是学算法啊
亲爱的敬爱的家人们,想入门AI,别一上来就啃《深度学习》啊!实实在在的路径是:用工具 -> 解问题 -> 学原理。1.Step1:选一个主AI,用到极致。立刻选一个(Kimi/DeepSeek/通义),把它变成你的“超级同事”。让它帮你写周报、做竞品分析、读文献、润色邮件。每天至少向它提10个问题,练习Prompt(指令),这是新时代的“编程”。 2.Step2:用AI解决一个实际小问题。比如,你是营销专业,就用AI分析小红书爆文结构;你是HR,就用AI生成JD和面试问题。在解决具体问题中,你自然就知道该补什么(比如要学点基础Python做数据分析)。 3.Step3:第三步:建立...
现在入门AI首先要做什么...
点赞
评论
收藏
分享
03-29 00:28
已编辑
门头沟学院 Java
27届agent简历
之前的简历面试官被喷写的涉猎范围太广了,求大佬看看这版有没有问题
投了多少份简历才上岸
点赞
评论
收藏
分享
04-07 19:02
门头沟学院 Web前端
字节前端二面
面了70分钟,完完全全的道心破碎,拼尽全力仍然没有战胜字节二面1、什么是视觉问答2、介绍一下项目3、组件封装这个过程中你做了哪些沉淀4、UI还原是怎么做的,纯靠观察吗5、实习的过程中有没有主动发现问题并解决6、你做的功能拓展有没有带来开发负担7、样式的一键切换怎么做的8、开放思维题:有一个粗细不均匀的绳子,燃烧需要一个小时,现在有两个绳子,如果衡量45分钟9、从url到页面渲染发生了什么10、tcp为什么需要三次握手11、为什么要使用rag+微调的手段coding输入一个url,获取所有的参数,自己设计测试样例,自己考虑边界,写一个健壮的代码相关提问:参数是undefined,会输出什么?如果...
查看18道真题和解析
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
大模型Agent面试全攻略(附答题思路)
3.8W
2
...
我感觉我遇到神仙mentor了
1.1W
3
...
谁都可能在说谎,但财报不会骗人
8205
4
...
春招产品内卷到什么程度了
7558
5
...
秋招失利别慌,好offer不怕晚
7085
6
...
入职翼支付2年多,聊聊感受
5967
7
...
上线一个月了,说几句真心话
4360
8
...
字节一二三hr面 java面经(已off)
3982
9
...
我在北京的2046天
3779
10
...
淘天aiagent一面
3709
创作者周榜
更多
正在热议
更多
#
Agent面试会问什么?
#
30606次浏览
1218人参与
#
通信/硬件的薪资开多少,才值得去?
#
76203次浏览
406人参与
#
厦门银行科技岗值不值得投
#
18555次浏览
420人参与
#
面试体验最好和最差的公司
#
22282次浏览
159人参与
#
美团笔试
#
888967次浏览
5592人参与
#
我的求职进度条
#
979076次浏览
6512人参与
#
哪些公司一直卡在简历筛选
#
103236次浏览
339人参与
#
拿到offer之后,可以做些什么
#
103253次浏览
505人参与
#
说说你知道的学历厂
#
399117次浏览
1420人参与
#
平台or薪资 硬件uu更看重哪个
#
167037次浏览
624人参与
#
bilibili求职进展汇总
#
190555次浏览
1091人参与
#
听劝,这个公司值得去吗
#
714681次浏览
2024人参与
#
一人分享一个skill
#
7999次浏览
218人参与
#
春招至今,你收到几个面试了?
#
78719次浏览
1041人参与
#
给工作过的公司写一条大众点评,你会怎么写?
#
10739次浏览
131人参与
#
美团秋招笔试
#
207953次浏览
1166人参与
#
拼多多工作体验
#
55121次浏览
387人参与
#
一人说一个提前实习的好处
#
122927次浏览
715人参与
#
烂工作和没工作哪个更痛苦?
#
17814次浏览
271人参与
#
巨人网络求职进展汇总
#
193640次浏览
1232人参与
#
AI替代不了什么?
#
12010次浏览
201人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务