首页 > 解决方案 > 如何为无限 WebSocket 连接配置 IIS 和 ASP.NET?

问题描述

我有一个提供 HTTP 请求的 Web 服务器,还允许 WebSocket 连接。此 Web 服务器在 ASP.NET (.NET 5.0) 中编程并托管在 IIS 10 中。

正如文档所述,只要 WS 连接仍然存在,我就必须保持请求中间件运行。这就是麻烦的开始。当我打开 10 个 WebSocket 连接时,我的 Web 服务器对任何新请求完全没有响应,无论它们是通常的 HTTP 请求还是新的 Websocket 请求。

我发现这是由于我的工作进程“忙”。似乎工作进程拒绝一次处理超过 10 个请求。因此,我有 10 个(非阻塞)挂起的请求、一个空闲的工作进程和大量无法处理的请求。这显然不是期望的行为。

我已经尝试为我的应用程序池增加工作进程的数量,这有效地以线性方式增加了可能的并发 WS 连接的数量。到目前为止,一切都很好。但问题是我希望我的 Web 应用程序能够扩展,并且只允许在我的应用程序池上使用一百万个工作进程似乎不是正确的方法。

每个请求的计算负载有点低,所以我相信一个工作进程可以同时处理超过 10 个。

那么,我错过了什么?在 ASP.NET 请求管道中一次维护多个(约 100 个)WebSocket 连接的最佳实践是什么?我应该有 10 个以上的工作进程还是我可以告诉一个工作进程不要限制打开的请求管道的数量?

标签: asp.netiiswebsocket

解决方案


推荐阅读