SSE、长轮询与 WebSocket 连接资源对比及 Spring Boot 配置指南

一、背景

在构建实时消息推送系统时,开发者常面临三种主流技术选型:

  • 长轮询(Long Polling)
  • SSE(Server-Sent Events)
  • WebSocket

三者在连接模型、资源消耗、扩展性等方面差异显著。本文旨在对比其连接资源占用特性,并提供Spring Boot 项目中的最佳实践与配置建议


二、连接模型与资源消耗对比

特性长轮询SSEWebSocket
通信方向客户端拉(伪推)服务器 → 客户端(单向)双向
连接类型短连接(但 hold 住)持久 HTTP 连接TCP 升级后独立连接
是否长期占用 HTTP 连接✅ 是(每次请求 hold 30~60s)✅ 是(连接持续打开)❌ 否(脱离 HTTP 协议栈)
线程模型每请求占 1 线程(阻塞)异步非阻塞(不占处理线程)异步非阻塞(NIO)
并发连接压力⚠️ 极高(易线程爆炸)⚠️ 高(受 socket 数限制)✅ 低(单线程可处理数千连接)
适用场景兼容老旧系统(最后选择)通知、日志、行情等单向推送聊天、游戏、协作编辑等双向交互

核心结论

  • 长轮询资源消耗最大,应避免用于高并发场景
  • SSE 比长轮询高效,适合中等规模单向推送
  • WebSocket 是高并发、低延迟、双向通信的首选

三、Spring Boot 中的连接数配置

3.1 Web 容器选择建议

容器适用场景优势
Tomcat默认,通用场景稳定、生态完善
Undertow推荐用于 SSE / 长轮询内存占用低,支持高并发连接
Netty(WebFlux)超高并发或 Reactive 架构完全非阻塞,单机支持 10w+ 连接

🔧切换为 Undertow(Maven)

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-undertow</artifactId></dependency>

3.2 Tomcat 配置(application.yml)

server:tomcat:max-connections:20000# 最大 socket 连接数(默认 8192)accept-count:200# 请求等待队列大小threads:max:500# 处理线程数(SSE 建立后不占此线程)min-spare:50connection-timeout:60000# 连接超时(毫秒)

⚠️注意:SSE 连接建立后不占用threads.max,但受max-connections限制。


3.3 Undertow 配置(推荐)

server:undertow:io-threads:8# IO 线程数 ≈ CPU 核数worker-threads:200# 阻塞任务线程buffer-size:1024queues:task:1024# 任务队列大小

✅ Undertow 默认支持数万并发连接,内存效率优于 Tomcat。


3.4 系统级限制(Linux)

每个 TCP 连接 ≈ 1 个文件描述符(fd),需调整系统限制:

# 查看当前限制ulimit-n# 临时提升(需 root)ulimit-n65536# 永久生效:编辑 /etc/security/limits.conf* soft nofile65536* hard nofile65536

💡 建议:ulimit -n≥ 预期最大连接数 × 1.2


四、容量估算与选型建议

用户规模推荐方案关键配置
< 1,000SSE + Tomcat默认配置即可
1,000 ~ 50,000SSE + Undertow + Redis Pub/Submax-connections=50000+ulimit -n 65536
> 50,000 或需双向通信WebSocket + NettyWebFlux Reactive SSE集群部署 + 连接分片

五、SSE 项目优化 Checklist

  • 使用Undertow替代 Tomcat(降低内存)
  • 配置server.undertow.max-connections足够大
  • 系统ulimit -n调高(> 连接数 × 1.2)
  • 使用 Spring 的SseEmitter(已支持异步)
  • 及时清理失效连接(注册onTimeout/onError回调)
  • 集群环境使用Redis Pub/Sub广播消息
  • 通过/actuator/metrics监控在线连接数

六、附:Reactive SSE(WebFlux)示例(超高并发)

@GetMapping(value="/events",produces=MediaType.TEXT_EVENT_STREAM_VALUE)publicFlux<ServerSentEvent<String>>events(){returnFlux.interval(Duration.ofSeconds(1)).map(seq->ServerSentEvent.builder("tick-"+seq).build());}

✅ 基于 Reactor 模型,单机可支持10万+ 并发连接,适合大型实时系统。


七、总结

问题回答
SSE 会占用很多 HTTP 连接吗?✅ 会,每个用户占 1 个持久 HTTP 连接,但比长轮询高效得多
WebSocket 会占用很多连接吗?❌ 不会,基于 NIO,连接成本极低
Spring Boot 需要配置连接数吗?必须配置!尤其是max-connections和系统ulimit

🎯选型口诀
单向推送用 SSE,双向交互选 WebSocket,长轮询仅作兜底。


📌文档结束
如需完整可运行的 Spring Boot + SSE + Redis 集群示例工程,请联系作者获取。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1141014.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AWS推出AI图像编辑新突破:用说话就能精准移动图片中的物体!

这项来自香港中文大学、AWS智能AI部门、亚马逊云服务和亚马逊机器人团队的联合研究发表于2025年1月&#xff0c;论文编号为arXiv:2601.02356v1。研究团队由谭靖、张兆阳、沈彦涛、蔡嘉瑞等多位学者组成&#xff0c;有兴趣深入了解的读者可以通过该编号查询完整论文。想要修改照…

雷家林(レイ・ジアリン)詩歌集録 その十五(日译版)

方雷大野家林Lei Jialin独立独立して一枝を持ち、湘波を俯みます。 洞庭の木が落ちるのはどうしようもないです。 行吟しながら沢の畔を歩き、人は憔悴しています。 自分が人を怜れんで、自分で歌います。云封雲がこの世を封じ、桃源を守ります。 秦の人々は自らの自在な世界を…

让 RAP 弹窗参数真正变成必填:Excel Upload Action 的两种实现路径

在很多基于 RAP 的应用里,action 不只是执行一段后端逻辑,它经常承担一种更贴近业务的交互:用户点一个按钮,系统先弹出 popup 让用户补充一些上下文信息,接着才真正开始处理数据。典型例子就是 Excel 导入:用户上传文件只是第一步,导入前往往还需要输入备注、选择是否试…

2026必备!专科生毕业论文TOP8 AI论文网站测评

2026必备&#xff01;专科生毕业论文TOP8 AI论文网站测评 2026年专科生毕业论文必备AI工具测评 随着人工智能技术在学术领域的广泛应用&#xff0c;越来越多的专科生开始借助AI工具提升毕业论文写作效率。然而&#xff0c;面对市场上琳琅满目的AI论文网站&#xff0c;如何选择真…

《呼吸秋千》我早已习惯,饥饿在呼吸上荡起秋千

《呼吸秋千》我早已习惯&#xff0c;饥饿在呼吸上荡起秋千 赫塔米勒&#xff08;1953~&#xff09;&#xff0c;德国作家&#xff0c;2009年&#xff0c;因其“以诗的凝练&#xff0c;散文的率直&#xff0c;描绘流离失所者的处境”而获得诺贝尔文学奖。 余杨 吴文权 译 后浪文…

香港科技大学突破文本理解难题:让AI模型内部“自我改造“

这项由香港科技大学的唐翼轩和杨毅领导的研究发表于2025年1月&#xff0c;论文编号为arXiv:2601.01046v1。有兴趣深入了解的读者可以通过这个编号在学术数据库中查询完整论文。在当今这个信息爆炸的时代&#xff0c;我们每天都在和各种文本打交道——搜索信息、阅读文章、查找资…

网页接收服务端消息的几种方式

介绍 网页接收服务端消息&#xff0c;一般有如下几种方式 直接轮询WebSocket 长链接长轮询Server send event 一、短轮询方式 前端页面按照时间间隔轮询拉取最新消息 缺点&#xff1a; 实时性差&#xff01;最长耗时等于时间间隔耗时没有消息也会有大量的请求&#xff0c…

光谱共焦技术在高精度尺寸与3D表面缺陷检测中的工业应用研究

摘要&#xff1a;随着智能制造与精密工业的快速发展&#xff0c;对非接触、高精度、高速度的在线检测技术需求日益迫切。以海伯森技术推出的系列高端光学传感器深入剖析其基于光谱共焦位移测量与光谱共焦成像的核心原理。重点阐述该技术如何在微观尺度上实现纳米级精度的三维尺…

IP协议 地址划分MAC地址作用ip addr命令

一、ip addr命令解读 roottest:~# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 …

从用户需求到设计:提示工程架构师设计高效界面的方法

从用户需求到设计:提示工程架构师设计高效界面的方法 一、引入:当“AI翻译官”遇到“表达困境” 小张是一家美妆品牌的新媒体运营,每天的核心工作之一是用AI生成朋友圈文案。但她总陷入同一个循环: 写提示时,要么太笼统(“帮我写一条口红的朋友圈”),AI输出的内容千篇…

斯坦福大学等发布:AI助手在企业政策执行上“偏科“得如此严重

当我们谈论人工智能在企业中的应用时&#xff0c;大多数人可能会觉得这些AI助手就像一个全能的员工——既能帮助客户解答问题&#xff0c;又能严格按照公司规定行事。不过&#xff0c;斯坦福大学、POSTECH、BMW集团等多所知名机构的研究团队最近发现了一个令人意外的现象&#…

提示工程架构师推荐:社交网络提示设计的10个高效工具

社交网络提示设计&#xff1a;用10个工具搭建「用户主动互动」的底层逻辑 清晨7点&#xff0c;你揉着眼睛刷朋友圈&#xff0c;一条提示弹出来&#xff1a;「你关注的博主分享了『职场新人避坑指南』&#xff0c;朋友小王已经点赞&#xff0c;要不要看看&#xff1f;」你鬼使神…

交通仿真软件:Paramics_(4).网络创建与编辑

网络创建与编辑 1. 网络创建的基本步骤 在交通仿真软件Paramics中&#xff0c;网络创建是仿真过程的基础。一个准确的交通网络模型能够帮助仿真器更真实地反映交通状况。以下是网络创建的基本步骤&#xff1a; 1.1 导入基础地图启动Paramics软件&#xff1a;首先&#xff0c;打…

JVM 内存溢出和死锁检测

内存溢出案例 案例环境 案例代码 package com.hero.jvm.memory; import java.util.ArrayList; import java.util.List; import java.util.UUID; public class TestJvmOutOfMemory {public static void main(String[] args) {List<Object> list new ArrayList<>();…

清华字节跳动首创视频换脸新纪元:让照片主角完美融入视频场景

这项由清华大学和字节跳动智能创作实验室联合开展的开创性研究于2026年1月发表&#xff0c;论文编号为arXiv:2601.01425v1。研究团队开发了一套名为DreamID-V的全新视频换脸技术框架&#xff0c;首次实现了将单张照片中的人物身份完美融入到任何视频场景中&#xff0c;同时保持…

交通仿真软件:Paramics_(5).交通流仿真

交通流仿真 1. 交通流仿真的基础概念 交通流仿真是一种通过计算机模拟技术来研究和分析交通系统运行情况的方法。它可以帮助交通规划师、工程师和研究人员了解交通系统在不同条件下的行为&#xff0c;从而优化交通设计、管理和控制。Paramics 是一款功能强大的交通仿真软件&…

阿尔伯塔大学新突破:让AI学会自我检查错误,准确率远超人工审核

这项由加拿大阿尔伯塔大学的Amirhosein Ghasemabadi和Di Niu教授领导的研究发表于2026年1月的arXiv预印本服务器&#xff0c;论文编号为2512.20578v2&#xff0c;有兴趣深入了解的读者可以通过该编号查询完整论文。现在的人工智能聊天机器人就像一个极其博学但有时会胡说八道的…

交通仿真软件:Paramics_(3).交通网络建模基础

交通网络建模基础 1. 交通网络的基本概念 交通网络是交通仿真中的基础组成部分&#xff0c;它描述了道路、交叉口、车道、交通信号等交通设施的布局和连接关系。在Paramics中&#xff0c;交通网络的建模是通过一系列工具和步骤来完成的。本节将介绍交通网络的基本概念&#xff…

交通仿真软件:Paramics_(3).数据输入与处理

数据输入与处理 在交通仿真软件中&#xff0c;数据输入与处理是至关重要的步骤。这一部分将详细介绍如何在Paramics中输入和处理各种交通数据&#xff0c;包括路网数据、交通流量数据、车辆数据等。我们将通过具体的例子来说明这些数据的输入方法和处理技巧。 路网数据输入 路网…

上海交大突破:单一AI模型实现全视觉创作任务

这项由上海交通大学的陈俊逸、何通等研究者与快手科技Kling团队、南洋理工大学合作完成的研究发表于2026年1月&#xff0c;论文编号为arXiv:2601.02358v1。对于想要深入了解技术细节的读者&#xff0c;可以通过这个编号在学术数据库中查询完整论文。在当今的AI时代&#xff0c;…