在生产中使用 SignalR。启动时一切正常,但 8-9 小时后,服务停止工作,无任何异常,或事件日志中的任何日志信息。
信息:
- 在线用户(在这 8-9 小时内使用此服务):3000
- 在线并发用户最大(同时):200
- 集线器计数:1(尝试在每种记录方法中使用 catch)
浏览器超时后,它返回“404 not found”。
你有什么想法吗?
在生产中使用 SignalR。启动时一切正常,但 8-9 小时后,服务停止工作,无任何异常,或事件日志中的任何日志信息。
信息:
浏览器超时后,它返回“404 not found”。
你有什么想法吗?
您使用的是什么版本的 SignalR?OutOfMemoryException
您应该使用 v0.5.2,因为以前的版本存在僵尸连接问题,这会导致应用程序池的请求数量达到或超过允许的数量, 从而关闭您的应用程序。
基本上会发生的情况是请求的数量将得到备份(使用性能监视器查看 ASP.NET/{Requests Current, Requests Queued, Requests Rejected} -请参阅性能调整)和/或您将最大化您的 IIS 请求并且服务将关闭。您可以手动覆盖它并增加 ASP.NET 的当前请求。我在我们的生产盒上将其增加到大约 20,000 个。
如果您没有最大化您的请求,您的应用程序池可能会由于内存使用量增加或关闭应用程序池的异常数量而关闭。
在 IIS 管理器的管理下,双击配置编辑器。
接下来,在顶部,单击system.applicationHost/applicationPools
然后单击“(集合)”行的 RHS。这将打开您的应用程序池集合编辑器。
选择您的 SignalR 应用程序池并检查底部的属性。在这里,您可以将periodicRestart/memory
阈值设置为您想要的任何值。
在我们的应用程序中,由于应用程序的高流量性质,我发现我们可以运行大约 45 分钟。
希望这会有所帮助。