【SpringBoot】Java高频面试题 - SpringBoot同时处理多少请求

发布时间:2026/7/31 21:22:37
【SpringBoot】Java高频面试题 - SpringBoot同时处理多少请求 Java高频面试题 - SpringBoot同时处理多少请求一、核心标准答案Spring Boot 本身不处理请求不决定并发数。Spring Boot 的请求并发能力完全由**内嵌 Web 服务器默认 Tomcat**的参数决定。通用结论SpringBoot 2.x / 3.x 默认配置默认情况下SpringBoot 可同时处理的最大并发请求数为 200。二、三大核心参数详解Tomcat 并发模型Tomcat 并发能力由三个核心参数共同控制三者作用层级不同层层限制请求流量。1. server.tomcat.threads.max核心瓶颈默认值200含义Tomcat 工作线程池最大线程数核心作用真正决定同一时刻能处理的请求数量。Tomcat 一个线程同一时间只能处理一个请求200个线程即最大同时处理200个请求。2. server.tomcat.accept-count等待队列默认值100含义所有工作线程占满后新请求的最大等待队列长度作用线程池满载时请求不直接拒绝进入队列排队队列满后新请求直接拒绝连接超时/503。3. server.tomcat.max-connections最大连接数默认值8192部分版本为10000含义服务器允许建立的最大 TCP 连接数作用包含正在处理、队列等待、Keep-Alive 长连接是全局连接上限默认值极大日常业务几乎不会触发该瓶颈。三、完整请求处理流程新请求进入服务的完整校验链路校验总连接数当前TCP连接数 max-connections(8192) → 直接拒绝连接获取工作线程存在空闲线程 → 立即处理请求线程池满载处理200个线程全部忙碌校验等待队列队列未满100→ 请求入队等待队列已满 → 拒绝请求线程复用线程处理完请求后从队列取出下一个请求继续处理四、关键并发数值结论面试必背实时并发处理上限200由最大工作线程数决定瞬时最大承载请求数200 100 300超300瞬时请求多余请求直接被拒绝max-connections(8192)宏观长连接限制非业务并发瓶颈五、并发参数自定义配置application.properties 配置示例# 调整Tomcat最大工作线程数核心并发数 server.tomcat.threads.max400 # 调整请求等待队列长度 server.tomcat.accept-count200 # 调整最大TCP连接数默认足够按需微调 server.tomcat.max-connections10000六、调优核心注意事项面试加分点1. 禁止盲目加大线程数每个Java线程默认占用约1MB栈内存线程过多会导致内存占用飙升、CPU上下文切换频繁、系统吞吐量下降反而引发性能卡顿。2. 按业务类型精准调优CPU密集型计算、加密、逻辑运算线程数不宜过多最优值接近CPU核心数避免CPU抢占切换。I/O密集型DB查询、接口调用、文件读写线程大量时间阻塞等待可适当放大线程数提升并发。3. 终极优化方案异步非阻塞针对I/O密集型业务调高线程数是治标不治本推荐两种方案彻底提升并发使用Async异步线程池处理业务使用Spring WebFlux响应式编程少量线程支撑数万并发4. 切换内嵌服务器SpringBoot默认Tomcat可替换为Undertow/Jetty两者线程模型更轻量、并发性能更高适合高并发场景。七、满分面试答题话术直接背诵SpringBoot 本身不处理请求并发能力由内嵌的 Tomcat 服务器决定。默认配置下SpringBoot 同时可处理200个并发请求。核心由三个参数控制第一max-threads默认200是真正的实时并发上限第二accept-count默认100是线程满载后的请求等待队列第三max-connections默认8192是全局TCP连接上限。所以服务瞬时最大可承载300个请求超出会被拒绝。实际调优不能盲目加大线程数需要区分CPU密集和I/O密集业务。高并发I/O场景相比调线程数使用异步非阻塞编程或替换Undertow服务器性能提升更明显。