56

最近几天我一直在看 SignalR。使用它,我创建了一个管理仪表板来获取有关数据库表的实时信息。基本上,该表由来自各种应用程序的不同用户填充。结果很好。只有当客户端 Broswer 和 WebServer 之间存在持久连接时,这些更新才可能发生。在将这个应用程序部署到生产环境之前,我几乎没有任何疑问。

我知道 SignalR 首先检查 WebSockets,然后根据客户端和服务器之间的可用性查找长轮询。无论它使用什么,客户端和服务器之间都会打开一个连接。

我的问题是它在更多用户连接到同一台服务器的情况下如何执行,例如同时连接 100,000 名管理员。IIS 对它可以在某一时刻打开的持久连接的数量是否有任何限制?如果是这样,我们可以将其配置为最大值以及该值是多少。

抱歉,如果是菜鸟问题

ASP.NET MVC3 & IIS 7 用于开发。

4

3 回答 3

32

您应该查看 GitHub 上 SignalR Wiki 的性能部分。这为以下内容提供了一些非常好的指导:

  • IIS 配置 - 每个应用程序的最大并发请求数
  • ASP.NET 配置 - 最大并发请求和请求队列限制

此外,它还说明了在执行应用程序负载测试时要监控的关键性能计数器。您应该做哪个 IMO 才能真正了解您的应用程序将如何执行并根据您的特定场景进行必要的调整。

最后,有一个指向Crank的链接,该链接是使用 SignalR 生成客户端负载的推荐工具。

更新:链接到曲柄现在是最新的。

于 2012-07-26T14:42:54.903 回答
6

谢谢佩奇。这是我的发现。默认情况下,ASP.NET 4.0 每个 CPU 最多接受 5000 个并发请求。要改变这一点,我们需要在 ASP.NET 配置文件中设置这个数字,该文件可以在这个位置 %windir%\Microsoft.NET\Framework\v4.0.30319\aspnet.config

我还发现了 Scott HanselMan 的这个很棒的 PodCast http://www.hanselminutes.com/325/aspnet-45-updates-core-webforms-and-signalr-with-damian-edwards

于 2012-07-28T13:02:01.870 回答
0

您可能更有可能在连接限制仅为 10* 的 Windows 8 / 10 上遇到此问题。当然,这只会在开发过程中影响您 - 但是如果您打开多个浏览器并打开活动连接并且很容易超过 10 个,这将是一个很大的痛苦。

*我目前无法确认 Windows 10 与 Windows 8 具有相同的连接限制,但很可能如此。

于 2015-10-11T20:27:08.527 回答