Web 服务器可以维持多少个 SSE 连接?
How many SSE connections can a web server maintain?
我正在尝试使用服务器发送事件 (SSE) 作为 websockets 的替代方案来进行实时数据推送(我的应用程序中的数据主要是单向的)。
它的可扩展性如何?我知道每个 SSE 连接都使用一个 HTTP 请求——这是否意味着 Web 服务器可以处理与 HTTP 请求一样多的 SSE 连接(类似于 this answer)?我觉得可能是这种情况,但我不确定 SSE 连接是如何工作的,以及它是否比简单的 HTTP 请求 complex/resource-hungry 多得多。
我主要想知道这与浏览器可以保持打开的并发 websocket 数量相比如何。 This answer 建议服务器只能同时处理 ~1400-1800 个套接字。
有人可以对此提供一些见解吗?
(澄清一下,我不是在问 how many SSE connections can be kept open from the client;我是在问 Web 服务器可以合理地保持打开多少个。)
Tomcat 8(以网络服务器为例)及以上使用 NIO 连接器处理传入请求。它最多可以服务 10,000 个并发连接 (docs)。它本身并没有说明最大连接数。他们还提供了另一个名为 acceptCount 的参数,如果连接数超过 10,000,它将作为后备。
套接字连接被视为文件。每个到 tomcat 的传入连接就像打开一个套接字并且取决于 OS 例如 linux 取决于文件描述符策略。当打开的连接数过多或已达到最大连接数时,您会发现一个常见错误,如下所示
java.net.SocketException: Too many files open
您可以通过编辑更改打开的文件数
/etc/security/limits.conf
不清楚允许的最大限制是多少。有人说 tomcat 的默认值是 1096,但 linux 的(默认值)是 30,000,可以更改。
在 article 我分享了 linkedIn 团队能够在一台主机上建立 250K 连接。
所以这应该让您对可能的最大 sse 连接有一个很好的了解。取决于您的 Web 服务器最大连接配置、OS 容量等
我正在尝试使用服务器发送事件 (SSE) 作为 websockets 的替代方案来进行实时数据推送(我的应用程序中的数据主要是单向的)。
它的可扩展性如何?我知道每个 SSE 连接都使用一个 HTTP 请求——这是否意味着 Web 服务器可以处理与 HTTP 请求一样多的 SSE 连接(类似于 this answer)?我觉得可能是这种情况,但我不确定 SSE 连接是如何工作的,以及它是否比简单的 HTTP 请求 complex/resource-hungry 多得多。
我主要想知道这与浏览器可以保持打开的并发 websocket 数量相比如何。 This answer 建议服务器只能同时处理 ~1400-1800 个套接字。
有人可以对此提供一些见解吗?
(澄清一下,我不是在问 how many SSE connections can be kept open from the client;我是在问 Web 服务器可以合理地保持打开多少个。)
Tomcat 8(以网络服务器为例)及以上使用 NIO 连接器处理传入请求。它最多可以服务 10,000 个并发连接 (docs)。它本身并没有说明最大连接数。他们还提供了另一个名为 acceptCount 的参数,如果连接数超过 10,000,它将作为后备。
套接字连接被视为文件。每个到 tomcat 的传入连接就像打开一个套接字并且取决于 OS 例如 linux 取决于文件描述符策略。当打开的连接数过多或已达到最大连接数时,您会发现一个常见错误,如下所示
java.net.SocketException: Too many files open
您可以通过编辑更改打开的文件数
/etc/security/limits.conf
不清楚允许的最大限制是多少。有人说 tomcat 的默认值是 1096,但 linux 的(默认值)是 30,000,可以更改。
在 article 我分享了 linkedIn 团队能够在一台主机上建立 250K 连接。
所以这应该让您对可能的最大 sse 连接有一个很好的了解。取决于您的 Web 服务器最大连接配置、OS 容量等