【问题标题】:IIS Pool - Current numbers of failuresIIS 池 - 当前失败次数
【发布时间】:2020-07-10 14:59:19
【问题描述】:

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

【问题讨论】:

  • 没有 IIS 管理 API 可以查询该号码。最好的办法是查询 Windows 事件日志以查看记录了多少崩溃。

标签: iis application-pool


【解决方案1】:

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

我想你可以通过性能监视器->App_pool_WAS->Total worker process failure->select specificinstance object来监控它。

【讨论】:

    【解决方案2】:

    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 在故障达到/接近阈值时提醒您。

    【讨论】:

    • 如何区分失败?
    • 不漂亮。我将用一些代码编辑我的答案...
    • 我不确定这个过滤器是否只会选择失败。如果我们只是在我们的应用程序中抛出一个错误,这将是一个日志错误,但就 IIS 而言它不是失败
    【解决方案3】:

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

    (启用性能计数器会导致(在我的经验中很小)性能损失 - 仅打开您需要的等。Microsoft 建议在生产工作负载上捕获这些计数器。

    查看此blog from Microsoft on performance counters in IIS

    【讨论】:

      猜你喜欢
      • 2020-12-02
      • 2017-01-22
      • 1970-01-01
      • 2013-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多