【问题标题】:IIS 8 Application pool recycle vs SignalR 2.3.0IIS 8 应用程序池回收与 SignalR 2.3.0
【发布时间】:2019-08-19 08:52:35
【问题描述】:

我在 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 重新连接,打开超过 6 万个 TCPIP 端口并导致 IIS 崩溃。

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

【问题讨论】:

    标签: iis signalr application-pool iis-8.5 signalr-2


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢,我编辑了问题,应用程序池被回收,不是崩溃或 IISReset。我将与 IT 团队核实“disallowOverlappingRotation”选项。
    • TimeLimit 回收>应该
    猜你喜欢
    • 1970-01-01
    • 2011-09-20
    • 2010-09-28
    • 2011-03-10
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多