SignalR在应用程序池回收时最大化cpu

时间:2014-03-06 01:28:10

标签: asp.net iis signalr

我有一个用.Net 4.5,MVC 4编写的网站,使用SignalR 2.0.2和Redis背板进行负载平衡。这也有许多操作可以将json返回给应用程序。它设置为预加载和应用程序池设置为始终运行。使用AWS Redis ElastiCache在Windows 2012,IIS 8上托管。

我将连接ID​​保存到我的SQL数据库中,针对OnConnected上的用户,OnReconnected,并使用OnDisconnected清除,但这些都是try / catch以防万一。

我们有一个iOS应用程序,通过websockets连接。不幸的是,该应用程序并没有关闭它的连接,并且创建它们的频率超过了需要。

净效果是服务器可以有3000多个连接,但只有几百个是真正的连接。这本身并不是一个问题,将在下一个应用程序版本中修复。

问题是当代码更新或应用程序池回收(定期间隔)时CPU长时间最大化。我没有在我写过的任何其他网站上发生过这种情况,这是第一个有如此多连接的SignalR网站,所以我相信服务器正试图优雅地处理所有连接。

效果是整个网站不可用。显然,执行IISRESET会修复它。如果系统在1台服务器或2台上运行,则无关紧要。

因此,知道此版本的SignalR不支持从服务器端断开客户端...

  1. 有谁知道为什么会这样?
  2. 除了用iisreset杀死网站外,我能做些什么吗?
  3. 如果需要更多信息,请询问。

    长期读者,第一次海报。 感谢

0 个答案:

没有答案