You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor Server(.NET 8)部署IIS:连接池耗尽超时及SignalR疑问

问题解答

1. 报错中的连接池连接具体指什么?

这里的连接池是SignalR传输连接池。Blazor Server依赖SignalR实现客户端与服务器的实时通信,每个用户会话会对应一个Blazor Circuit(电路),而Circuit的底层是通过SignalR连接来维持的。

SignalR为了提升性能,会维护一个TCP连接池来复用连接(避免频繁创建/销毁TCP连接的开销)。当所有池内的连接都被活跃的Circuit占用,且无法快速创建新连接时,新的连接请求(比如新用户登录、现有用户重连)就会触发超时,抛出你看到的“所有池化连接已被占用”错误。

2. SignalR连接是否存在数量限制?

SignalR本身没有绝对的硬连接数上限,但实际可用的连接数会受以下几个层面的限制:

  • 底层Web服务器配置:你用的是IIS托管,IIS默认有并发连接数相关的限制(比如网站的“最大并发连接数”默认未明确限制,但应用池的队列长度、工作进程数会间接影响);同时Blazor Server在IIS后运行时,底层的Kestrel服务器也有默认的连接数限制。
  • SignalR自身的连接池配置:.NET 8中SignalR的传输连接池默认有最大连接数设置,当活跃的Circuit数量超过这个上限时,就会出现连接耗尽的情况。
  • 服务器系统资源:每个SignalR连接(对应Blazor Circuit)会占用一定的内存、CPU资源,当服务器资源不足时,也会间接限制可维持的连接数。
  • Circuit回收机制:如果用户关闭浏览器后,Blazor Circuit没有及时被回收(默认Circuit闲置超时是30分钟),这些闲置的Circuit依然会占用连接池资源,加上你把应用池的固定时间回收设为0,不会自动重启进程,导致资源无法释放,加速连接池耗尽。

内容的提问来源于stack exchange,提问作者SilentRage47

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 04:25:59