ASP.NET MVC为什么我的应用程序会继续重启?

dav*_*ben 21 asp.net asp.net-mvc diagnostics restart

我有一个ASP.NET MVC网站,每天在Server Intellect的共享主机平台上获得大约6500次点击.我一直在日志中看到app重启,我无法弄清楚原因.

我在这里阅读了Scott Gu的文章:http://weblogs.asp.net/scottgu/archive/2005/12/14/433194.aspx 并实现了这项技术,以下是我日志中显示的内容:

Application Shutdown: 
_shutDownMessage=HostingEnvironment initiated shutdown 
HostingEnvironment caused shutdown    
_shutDownStack=at
System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)     at 
System.Environment.get_StackTrace()     at 
System.Web.Hosting.HostingEnvironment.InitiateShutdownInternal()     at 
System.Web.Hosting.HostingEnvironment.InitiateShutdown()     at 
System.Web.Hosting.PipelineRuntime.StopProcessing()
Run Code Online (Sandbox Code Playgroud)

它似乎每五分钟发生一次.

有没有其他方法来调试这个?

更新:以下是Softion提到的应用程序池设置:

中央处理器

  • 限制:0
  • 限制行动:不采取行动
  • 限制间隔:5分钟

过程模型

  • 空闲超时:20分钟
  • Ping最长响应时间:90秒
  • 启动时间限制:90秒

快速失败保护

  • 启用:True
  • 故障间隔:5分钟

回收

  • 专用内存限制:100 MB
  • 常规时间间隔:1740分钟(29小时)
  • 请求限制:0
  • 具体时间:没有
  • 虚拟内存限制:0

Sof*_*ion 30

您可以通过HostingEnvironment轻松获取关闭的原因.您阅读了Scott Gu的文章,但您错过了它的评论.

     var shutdownReason = HostingEnvironment.ShutdownReason;
Run Code Online (Sandbox Code Playgroud)

关闭原因代码

如果原因是HostingEnvironment,请检查控制回收的IIS应用程序池参数.我在每个附近放了一个红点.请查看您自己副本底部帮助框中的说明以获取完整信息.

您可以要求您的提供商为您提供applicationHost.config文件,其中设置了所有这些参数.他们在C:\ Windows\System32\inetsrv\config中找到它.我相信你也可以使用一些.NET API来获取它们.

在此输入图像描述

对于每天6500次点击,这是一个非常低的命中率,我打赌"空闲超时"设置为5mn.

更新(将评论移到这里// jgauffin)

  • CPU Limit 0 =禁用.
  • 进程模型空闲超时:20分钟(没有请求的20分钟回收您的应用程序).
  • 启用快速失效保护(5mn).您需要知道最大故障数.如果您的应用程序在5mn内引发超过此异常计数,我们将进行回收.
  • 专用内存限制:100 MB.是的你应该描述,这是一个下限.
  • 常规时间间隔:1740分钟(29小时):每29小时回收一次.
  • 请求限制:0(禁用).
  • 虚拟内存限制:0(禁用).
  • 启用快速失效保护(5mn).您需要最大故障数.如果您的应用程序在5mn内投掷超过此异常计数,则会进行回收.如果它每隔500万回收一次,这应该是要检查的东西.在辅助工作线程中应该有0个未处理的异常.将代码包装到try catch中.