0

我在 IIS 8.5.9600.16384 中有一个网站,我们通过循环同步和 SignalR 2.3.0 与数千个移动设备进行通信。

今天早上,我们在工作时间重置了应用程序池,这导致 SignalR 同时调用我们所有移动设备的“OnReconnect”。

我认为 IIS 首先启动新进程,然后杀死旧进程,没有停机时间。

有人能告诉我当 IIS 在 SignalR 端回收它的应用程序池时会发生什么吗?在哪些情况下会出现连接中断?(例如:如果服务器很忙?)

编辑:由于“时间限制”,IIS 回收了应用程序池。IT 团队将更改此设置,以便应用程序池在每天晚上重置,这将对我们的应用程序产生较小的影响。

A worker process with process id of '8720' serving application pool 'DefaultAppPool' has requested a recycle because the worker process reached its allowed processing time limit.

还确认 disallowOverlappingRotation 未设置为 True。任何提示都会有所帮助。


几年后,我仍然遇到应用程序池回收和 SignalR 的一些问题。当应用程序池回收时,我们偶尔会看到数千个 SignalR 重新连接,打开超过 60k TCPIP 端口并导致 IIS 崩溃。

我们设法让它“正常”运行了很长一段时间,但它仍然崩溃。任何提示都会有所帮助。谢谢

4

1 回答 1

1

我首先要确定 IIS 是如何被重置的。如果您遇到崩溃或执行了 IISReset,则在新的进程重新启动之前,这些进程将关闭。另一方面,如果您配置了 AppPool 回收,那么您提到的重叠过程应该会发生。我会检查系统事件日志以获取回收消息。请注意,并非所有回收原因都默认记录。

您还可以检查以确保 disallowOverlappingRotation 未设置为 True。

指定 WWW 服务是否应该在该进程关闭时启动另一个工作进程来替换现有的工作进程。如果工作进程加载任何不支持多个工作进程的应用程序代码,则该属性的值应设置为 true。 https://docs.microsoft.com/en-us/iis/configuration/system.applicationhost/applicationpools/add/recycling/

于 2019-03-28T14:54:14.853 回答