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

SpringBoot应用最大活跃SseEmitters数量限制问题咨询

问题根因分析
  • 你遇到的10个连接上限问题本质是Spring Boot内置Web栈的异步请求处理线程池默认配置限制:Spring MVC默认用于处理异步返回值(包括SseEmitter、DeferredResult、ResponseBodyEmitter这类异步场景)的SimpleAsyncTaskExecutor默认并发上限就是10,线程被活跃的SSE长连接占满后,新的请求会进入排队阻塞状态,自然会出现所有REST端点无响应的情况。
  • 你在Tomcat、Jetty下都能复现问题,也验证了这是Spring MVC层面的通用配置问题,和底层服务容器本身无关。
解决方案

你需要自定义异步处理线程池的配置,调整并发上限匹配你的业务量级,常用的两种配置方式如下:

方式1:配置文件直接调优(快速生效)

在application.yml(或application.properties)中添加如下配置,直接修改异步请求线程池的核心参数:

spring:
  task:
    execution:
      pool:
        core-size: 50 # 核心线程数,根据业务预期的并发SSE连接数设置
        max-size: 200 # 最大线程数
        queue-capacity: 1000 # 等待队列容量
      thread-name-prefix: sse-async- # 线程名前缀,方便后续问题排查

对应application.properties版本配置:

spring.task.execution.pool.core-size=50
spring.task.execution.pool.max-size=200
spring.task.execution.pool.queue-capacity=1000
spring.task.execution.thread-name-prefix=sse-async-

方式2:代码自定义配置(更灵活)

如果需要更精细化的控制(比如自定义拒绝策略、异常处理逻辑),可以实现WebMvcConfigurer接口重写异步支持配置:

@Configuration
public class SseAsyncConfig implements WebMvcConfigurer {
    @Override
    public void configureAsyncSupport(AsyncSupportConfigurer configurer) {
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        executor.setCorePoolSize(50);
        executor.setMaxPoolSize(200);
        executor.setQueueCapacity(1000);
        executor.setThreadNamePrefix("sse-async-");
        // 自定义拒绝策略,线程满时由调用线程执行,避免服务整体阻塞
        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
        executor.initialize();
        
        configurer.setTaskExecutor(executor);
        // 全局设置异步请求超时时间,可和SseEmitter的超时时间保持一致
        configurer.setDefaultTimeout(TimeUnit.MINUTES.toMillis(10));
    }
}
额外注意事项
  • 配置完成后建议做压测验证,根据实际业务承载量调整线程池参数,避免参数设置过大导致内存溢出。
  • 生产环境建议主动管理SseEmitter的生命周期,客户端断开连接、超时后及时调用complete()方法释放线程资源,避免无效连接占用线程。
  • 如果你的业务需要支撑上万级别的并发长连接,建议改用WebFlux响应式栈实现SSE,异步非阻塞模型不需要依赖线程池数量扛连接,并发能力会高很多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:42:00