IIS 池 - 当前失败次数

IIS Pool - Current numbers of failures

IIS 中有一个针对应用程序池“最大失败次数”的设置。如何查看已经发生了多少次失败?

IIS 应用程序错误在服务器上记录为 Windows 事件。您可以使用 EventLog.GetEventLogs Method 阅读它们。但是,您将不得不过滤大量垃圾。

编辑:添加示例代码:

var eventLogs = EventLog.GetEventLogs();

var applicationLogs = eventLogs.First(w => w.Log == "Application");

Console.WriteLine("Number of application log entries: " + applicationLogs.Entries.Count);

foreach (EventLogEntry entires in applicationLogs.Entries)
{
    if (entires.EntryType.ToString().Equals("Error"))
    {
        // An application error.
        Console.WriteLine("Source: " + entires.Source);
    }
}

另一种方法是在您的服务器上添加 DataDog APM 或类似工具。然后让 DataDog 在失败时提醒您 reaches/approaches 一个阈值。

您可以使用 Windows 性能计数器来获取有关机器的大量统计信息。我不确定 IIS 中的“最大故障”在性能计数器中的具体含义 - 但假设这是致命的 errors/app 重新启动有一个名为 ASP.NET\Application Restarts 的计数器,这可能是一个好的开始。

(启用性能计数器会导致(以我的经验来看很小)性能下降 - 只打开你需要的等等。微软建议在生产工作负载上捕获一些这样的计数器。

检查这个 blog from Microsoft on performance counters in IIS

“最大失败”的值表示在快速失败保护关闭应用程序池之前允许的工作进程崩溃的最大次数。当应用程序崩溃达到极限时,IIS 终止并关闭应用程序池,然后您只会收到 503 错误 Serivce Unavailable。

我想你可以通过性能监视器->App_pool_WAS->总工作进程失败->select 特定实例对象来监控它。