聊聊接口最大并发处理数

2025-10-29 07:04:05 4阅读

双核 CPU 执行两个任务时,每个核心各自执行一个任务,和单核 CPU 在两个任务之间不断切换相比,它的执行效率更高。

思考一下

那么这里我们讲了关于并发、并行概念与我们的接口最大并发处理数之间有什么关系嘞?放心这都是铺垫,为了让你好消化后面的内容。

这里我给大家总结下并发与并行的概念:

大家注意我上面加粗的字体,并发强调的是在同一段时间内,它是一个时间范围的概念。打个比方,并发是一个人同时吃三个馒头,吃完一个馒头需要 1 分钟,他就算胃口在大,也只能一个一个馒头吃,吃完三个需要花 3 分钟。

再看并行,并行强调的在同一时刻。打个比方,并行就是三个人同时吃三个馒头。这三个人可以在同一时刻一人吃一个馒头。吃完三个只需要花 1 分钟。

那么看到这里,我在问你个问题,3 个人的在 3 分钟内最多能吃多少个馒头?

相信大家都能告诉我。

理解接口的最大并发处理数

在 Java 语言里面,我们怎么理解并发跟并行嘞?还是跟吃馒头一样,我给大家打个比方,相信大家就明白了。

比如说我有一个接口,他的 RT (响应时长)是 50 毫秒,只有一个线程处理客户端请求,那这个线程在 1000 毫秒就能够处理 20 个客户端请求。

这里 20 就代表一个线程在 1 秒内的最大并发数。

那假如有两个线程处理客户端请求,接口的最大并发数是不是变成了 40,三个线程处理客户端请求,接口的最大并发数就变成了 60,以此类推。

这里我们就可以得出一个公式,线程个数 * 单线程最大并发数 就代表接口的最大并行处理数。

那么根据公式,我们得出一个结论,通过增大线程数或者减少接口响应时间可以增大接口的最大并发处理数。

聊聊 Tomcat 容器的并发处理配置

在 Spring Boot 发布后,Tomcat 就成为了 Spring Boot 默认的 web 容器。这里结合上文内容,给大家讲解下 Spring Boot 中涉及 Tomcat 服务器的一些关键参数,以及在高并发情况下如何通过这些参数来控制请求量。Spring boot 配置文件如下,

SpringBoot 版本:3.1.5

server.port

该参数用于指定服务器监听的端口号。通过配置不同的端口号,可以实现多个服务在同一主机上并行运行。

这里为了方便大家理解,我用开饭店来给大家做比喻。通过指定服务器 ip + 启动端口,就相当于告诉顾客我们的饭店位置,等待顾客上门吃饭。

server.tomcat.threads.max

该参数定义了 Tomcat 服务器的最大线程数。在高并发情况下,可以通过增加最大线程数来提高服务器最大并发处理数的能力,但需要注意服务器的硬件资源限制。

threads.max 相当于设置饭店在最忙碌时候,需要的最大的服务员数量,假如说一个服务员只能服务 1 个客人,那么 200 个服务员就可以同时服务 200 个客人,注意这是并行服务哦。

server.tomcat.threads.min-spare

此参数用于设置服务器在空闲状态下保持的最小线程数。确保服务器在处理请求时有足够的线程可用,以避免延迟。

threads.min-spare 相当于设置饭店空闲时候需要的最少的服务员数量。

server.tomcat.max-connections

该参数指定服务器接受和处理的客户端最大连接数。超过这个限制后,会放入 accept-count 队列中

max-connections 相当于设置饭店空间内客人的最大容纳数量,注意是容纳,进了饭店的客人不是一进来就能享受服务的。往往还需要等待一段时间。这段时间就是当服务员服务上一个客人完毕后,有空出来的服务员才能给进店新客人服务。

server.tomcat.accept-count

此参数定义了当所有可能的请求处理线程都在使用时,传入连接请求的最大队列长度。在高并发情况下,可以通过适当调整此参数来控制连接请求的排队长度。

accept-count 相当于设置饭店门口的排队人数大小。想一想我们外出吃饭的时候,什么情况需要排队,当然是店内爆满,没有座位。那么这个时候你就需要排个队了。注意如果说排队人都满了,怎么办? 这个时候饭店就会通知没有排上队,还想要假如排队的人,“你们不要排队了,今天吃饭人满了,大家去别处吃饭吧!”。 对应上 Tomcat 就是遇到客户端连接数量超过了 max-connections + accept-count 大小后的情况,此时 Tomcat 会直接拒绝新的客户端连接。

最后说两句

感谢大家阅读,这篇文章从构思到写完,花了我差不多 6 个 小时的时间,用尽量简单易懂的话语让大家理解并发、并行、接口最大并发处理数的概念,希望能给大家提供帮助。

我正在参与

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。