You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot仅处理单个请求问题:多请求串行执行异常排查

问题:Spring Boot接口无法并发处理请求

环境信息

  • Spring Boot版本:2.7.6(内置Tomcat 9.0.69)
  • Java版本:1.8
  • 未配置任何自定义属性文件

接口代码

@GetMapping("/start")
public String demo() {
    Response output = null;
    System.out.println("Inside API");
    
    InputRequest request = new InputRequest();
    request.setType("type1");
    request.setSize(50);
    request.setPageType("page1");
    
    for(int i = 0 ; i<10000000; i++) {
        System.out.println("ankit "+i);
    }
    
    System.out.println("Inside done");

    return "Success";
}

现象与预期

当从10个不同浏览器窗口调用http://localhost:8000/start时,请求串行执行,日志输出如下:

Inside API
Inside Done
Inside API
Inside Done
...

预期日志应为多个请求同时进入接口,输出:

Inside API
Inside API
Inside API
...

原因与解决办法

核心原因

问题并非出在Spring Boot或Tomcat的配置上,而是浏览器对同一域名的并发请求数限制。主流浏览器(如Chrome、Firefox)默认对同一域名的并发HTTP请求数限制为6个左右,超出的请求会被浏览器排队等待,直到已有请求完成后才会发起新请求。即使打开多个浏览器窗口,部分浏览器仍会共享域名请求的并发限制策略。

验证与解决方式

  1. 换用多浏览器或无限制工具测试:使用不同品牌的浏览器(如Chrome、Edge、Firefox各开几个窗口),或者用Postman、curl等专业接口测试工具批量发起请求,这类工具没有浏览器的并发请求数限制,能真实验证后端的并发处理能力。
  2. 显式配置Tomcat线程池(可选):虽然Spring Boot默认的Tomcat线程池(核心线程数10,最大线程数200)足够处理10个并发请求,但如果需要调整并发能力,可在application.properties中添加配置:
server.tomcat.threads.core=20
server.tomcat.threads.max=200

内容的提问来源于stack exchange,提问作者Ankit Bansal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 17:30:46