websocket - Web 服务器可以维护多少个 SSE 连接?

标签 websocket webserver server-sent-events

我正在尝试使用服务器发送事件 (SSE) 作为实时数据推送的 websockets 的替代方案(我的应用程序中的数据主要是单向的)。

这将有多大的可扩展性?我知道每个 SSE 连接都使用一个 HTTP 请求——这是否意味着 Web 服务器可以处理与 HTTP 请求一样多的 SSE 连接(例如 this answer )?我觉得可能是这种情况,但我不确定 SSE 连接是如何工作的,以及它是否比简单的 HTTP 请求更复杂/更需要资源。

我主要想知道这与浏览器可以保持打开的并发 websockets 数量相比如何。 This answer建议服务器只能同时处理 ~1400-1800 个套接字。

有人可以对此提供一些见解吗?

(澄清一下,我不是问 how many SSE connections can be kept open from the client ;我问的是网络服务器可以合理地保持打开多少。)

最佳答案

使用 NIO 连接器处理传入请求的 Tomcat 8(以 Web 服务器为例)及更高版本。它可以服务最多 10,000 个并发连接( docs )。它没有说明最大连接本身。他们还提供了另一个名为 acceptCount 的参数,它是连接超过 10,000 时的回退。

套接字连接被视为文件。到 tomcat 的每个传入连接就像打开一个套接字,并且取决于操作系统,例如在 linux 中取决于文件描述符策略。当打开的连接过多或达到最大连接数时,您会发现一个常见错误,如下所示

java.net.SocketException: Too many files open

您可以通过编辑更改打开文件的数量
/etc/security/limits.conf

目前尚不清楚允许的最大限制是多少。有人说 tomcat 的默认值是 1096,但 linux 的(默认值)是 30,000,可以更改。

关于 article我已经分享了linkedIn 团队能够在一台主机上建立 25 万个连接。

所以这应该让你对最大 sse 连接有一个很好的了解。取决于您的 Web 服务器最大连接配置、操作系统容量等。

关于websocket - Web 服务器可以维护多少个 SSE 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53136208/

相关文章:

javascript - 服务器发送的事件仅处理字符串吗?

javascript - 使用 Apache 的 mod_proxy_wstunnel 连接到 PHP,而不使用第 3 方 API

java - 用于连接到 Heroku WebSocket 端点的 URI

web-applications - LAMP 与 MEAN 与其他 Web 应用程序服务器

apache - 如何强制 Apache 服务器使用 TCP 或 UDP?

nginx - 围攻未知 react

jquery - Server Sent Events EventSource 不会在 firefox 中连续调用

java - GRPC 服务器响应延迟

node.js - 客户端无法连接到Azure应用程序服务上托管的nodejs websocket服务器?

java - 服务器端事件未使用 SSE 在 Jersey 2.8 中触发