面试官问:你们服务最大的并发量是多少?怎么回答?

本文探讨了SpringBoot中Tomcat的默认并发配置,包括最大线程数、最大连接数及其对并发量的影响。解释了BIO和NIO的区别,并分析了线程数量与并发处理的关系。强调了过多线程可能导致的资源浪费和响应时间延长,提出了最佳线程数目的计算公式,并给出了Tomcat关键配置参数的说明。
摘要由CSDN通过智能技术生成

推荐学习

Spring Boot 能支持的最大并发量主要看其对Tomcat的设置。由于现在都使用的是springboot服务,配置文件中也没有配置Tomcat 相关参数,基本都是使用默认的Tomcat的线程配置。

默认设置中,Tomcat的最大线程数200,最大连接数10000。

并发量指的是连接数,还是线程数?

连接数。

200个线程如何处理10000条连接?

Tomcat有两种处理连接的模式

BIO

一个线程只处理一个Socket连接

NIO

一个线程处理多个Socket连接。由于HTTP请求不会太耗时,而且多个连接一般不会同时来消息,所以一个线程处理多个连接没有太大问题。

为什么不多开几个线程?

多开线程的代价就是,增加上下文切换的时间,浪费CPU时间,另外还有就是线程数增多,每个线程分配到的时间片就变少。

多开线程≠提高处理效率。

为何不增大最大连接数?

增大最大连接数,支持的并发量确实可以上去。但是在没有改变硬件条件的情况下,这种并发量的提升必定以牺牲响应时间为代价。

配置文件为空,这些默认配置哪来的?

Spring Boot的默认配置信息,都在 
spring-boot-autoconfigure-版本号.jar 这个包中。

Tomcat配置:
org.springframework.boot.autoconfigure.web.ServerProperties.java

最佳线程数目 = ((线程等待时间+线程CPU时间)/线程CPU时间 )* CPU数目。

最佳线程数目 = ((线程等待时间+线程CPU时间)/线程CPU时间 )* CPU数目,

CPU密集型

操作内存处理的业务,一般线程数设置为:CPU核数 + 1 或者 CPU核数*2。核数为4的话,一般设置 5 或 8 。

IO密集型

文件操作,网络操作,数据库操作,一般线程设置为:cpu核数 / (1-0.9),核数为4的话,一般设置 40

maxThreads="8"  //最大并发数 
minSpareThreads="100"///初始化时创建的线程数
maxSpareThreads="500"///一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。
acceptCount="700"// 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理

maxThreads 客户请求最大线程数 
minSpareThreads Tomcat初始化时创建的 socket 线程数 
maxSpareThreads Tomcat连接器的最大空闲 socket 线程数 
enableLookups 若设为true, 则支持域名解析,可把 ip 地址解析为主机名 
redirectPort 在需要基于安全通道的场合,把客户请求转发到基于SSL 的 redirectPort 端口 
acceptAccount 监听端口队列最大数,满了之后客户请求会被拒绝(不能小于maxSpareThreads ) 
connectionTimeout 连接超时 
minProcessors 服务器创建时的最小处理线程数 
maxProcessors 服务器同时最大处理线程数 
URIEncoding URL统一编码

maxThreads:处理的最大并发请求数,默认值200
minSpareThreads:最小线程数始终保持运行,默认值10
maxConnections:在给定时间接受和处理的最大连接数,默认值10000

作者:JavaEdge.

原文链接:
https://blog.csdn.net/qq_33589510/article/details/118443886

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值