IIS上的ASP.NET核心健康监控(记录重启原因)

时间:2017-03-02 09:33:40

标签: c# asp.net .net iis .net-core

我有一个在.NET Framework上运行的ASP.NET核心应用程序。我在IIS上托管它,一切正常,除了有时它正在重新启动的事实。我读到IIS可以重启应用程序的原因有很多。我发现对于一个ASP.NET应用程序,我可以将它放在我的web.config中,将原因记录到事件查看器中。

 <healthMonitoring>
      <bufferModes>
        <add name="Critical Notification" maxBufferSize="100" maxFlushSize="20"
                urgentFlushThreshold="1" regularFlushInterval="Infinite" urgentFlushInterval="00:01:00"
                maxBufferThreads="1" />
        <add name="Notification" maxBufferSize="300" maxFlushSize="20"
                urgentFlushThreshold="1" regularFlushInterval="Infinite" urgentFlushInterval="00:01:00"
                maxBufferThreads="1" />
        <add name="Analysis" maxBufferSize="1000" maxFlushSize="100"
                urgentFlushThreshold="100" regularFlushInterval="00:05:00"
                urgentFlushInterval="00:01:00" maxBufferThreads="1" />
        <add name="Logging" maxBufferSize="1000" maxFlushSize="200" urgentFlushThreshold="800"
                regularFlushInterval="00:30:00" urgentFlushInterval="00:05:00"
                maxBufferThreads="1" />
      </bufferModes>

      <rules>
        <add name="All Errors Default" eventName="All Errors" provider="EventLogProvider"
                profile="Default" minInstances="1" maxLimit="Infinite" minInterval="00:01:00"
                custom="" />
        <add name="Failure Audits Default" eventName="Failure Audits"
                provider="EventLogProvider" profile="Default" minInstances="1"
                maxLimit="Infinite" minInterval="00:01:00" custom="" />
        <add name="Application Lifetime Events Default"
                 eventName="Application Lifetime Events"
                 provider="EventLogProvider"
                 profile="Default"
                 minInstances="1"
                 maxLimit="Infinite"
                 minInterval="00:01:00"
                 custom="" />
      </rules>
    </healthMonitoring>

但是,它似乎不适用于ASP.NET Core,因为我得到的唯一日志是:  成功启动进程'4808'并正在侦听端口'21455'。知道如何展示同样的东西吗?

编辑:从日志中我可以看到没有未处理的异常。事件查看器不记录任何原因。我还禁用了应用程序池“回收...”设置下的所有回收条件。注意我在幕后使用SignalR也许非常重要。

编辑2:

  1. 我正在使用第三方库,它在后台任务中执行某些操作。 2.自托管时,应用程序不会崩溃。
  2. 当我模拟繁重的CPU使用率和高内存使用量时,应用程序不会重新启动。
  3. 我模拟死锁时会创建事件日志失败。
  4. 应用程序不会捕获任何未处理的异常,未观察到的任务。
  5. 如果我模拟应用程序崩溃,则事件日志有效。它只在我使用第三个库时才起作用(看起来这个lib导致问题)。
  6. DiagDebug没有产生任何有趣的东西:
  7. 在w3wp__DefaultAppPool__PID__4372__Date__03_06_2017__Time_03_44_34PM__887__Ntdll!ZwTerminateProcess.dmp ntdll上的汇编指令!来自Microsoft Corporation的C:\ Windows \ System32 \ ntdll.dll中的DbgBreakPoint在第9行引起了断点异常(0x80000003)

    TLDR 3rd库导致IIS回收应用程序而不在事件日志中生成原因。第三个库可能会发生什么?|

    编辑:我已经弄明白问题是什么了。我有一个以下结构: -Site- ParentApp -ChildApp(嵌套在ParentApp中)

    我的应用程序是ChildApp进程,第三方库在ParentApp目录中生成了一些数据。因为它们共享相同的应用程序池,所以IIS认为这是配置更改并重新启动该过程。实际上,ParentApp应该只是虚拟目录,但它偶然转换为应用程序。我仍然不知道如何在事件查看器中记录它。

0 个答案:

没有答案