我有一个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()
似乎每五分钟就会发生一次。
还有其他方法可以调试吗?
更新:以下是Softion提到的应用程序池设置:
CPU
流程模型
快速失败保护
回收
答案 0 :(得分:30)
您可以通过HostingEnvironment轻松获取关闭的原因。 您阅读了Scott Gu的文章,但您错过了它的评论。
var shutdownReason = HostingEnvironment.ShutdownReason;
如果原因是HostingEnvironment,请检查控制回收的IIS应用程序池参数。我在每个附近放了一个红点。请查看您自己副本底部帮助框中的说明以获取完整信息。
您可以要求您的提供商为您提供applicationHost.config文件,其中设置了所有这些参数。他们在C:\ Windows \ System32 \ inetsrv \ config中找到它。我相信你也可以使用一些.NET API来获取它们。
对于每天6500次点击,这是一个非常低的命中率,我打赌“空闲超时”设置为500万。
答案 1 :(得分:3)
重新更新:
设置要求提供者帮助,但是更好地询问有关重启原因的信息,就像我在原始答案中提到的那样,即我在orig答案中提到的重启的实际日志条目。从那些你可以特别知道被触发的东西,我看到发生了一个达到不同极限。
你真的必须:
使用a配置您的应用程序 实际数量的测试数据
我的资金达到了您的托管服务提供商设置的资源限制。
在没有目标的情况下疯狂进行优化之前,请联系您的提供商并要求他们为您提供有关重启的信息。
典型的回收:
一旦你知道了这个案子,就必须找出拿走这些资源的内容。为此,您必须使用实际数量的测试数据来分析您的应用程序。了解它是内存还是处理器有助于了解要查找的内容。
答案 2 :(得分:1)
IIS是否设置为经常回收应用程序池?
应用程序池中是否存在某种失控的内存泄漏?
答案 3 :(得分:1)
这需要了解一下你的应用程序在这里做了多少可能导致应用程序重启/重置甚至关闭的事情列表
如果您可以使用附加的调试器重现问题,则可以很容易地跟踪异常,您可以进入Visual Studio并在抛出未被用户代码捕获的所有异常时启用它们。它有时会揭示出其他隐藏起来的有趣内容。