asp.net - 如何为无限 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 个以上的工作进程还是我可以告诉一个工作进程不要限制打开的请求管道的数量?
解决方案
推荐阅读
- html-table - 原生 HTML 和 zk-if 的奇怪错误
- sql - Postgresql 将表连接到多个列
- java - 在对象上同步并更改其字段之一
- swift - 快速图像选择器获取多张图片
- django - Django Rest Framework - 分页数据 URL 显示 http 而不是 https
- android - 构建aar时会放入gradle文件吗?
- c# - 如何将对象转换为通用?
- haskell - 模式匹配字段,但也有一个代表整个数据类型的变量
- java - 如何从 inputreader.read() 中读取数据?
- c# - 如何在不同 DbContext 上找到的模型之间创建关系?