一个应用程序池一直挂着IIS 7

时间:2012-10-31 09:29:49

标签: c# sql-server-2008 iis iis-7 iis-7.5

出于某种原因,我的应用程序池在几天内就会崩溃一次。最大的问题是我的管理事件中没有关于此池的错误或警告的日志。 (其他池中有几个警告,但只有这个池不断崩溃)。我所做的更改只有在等待了几天后才能进行测试。

我试图将我的代码带回到没有出现问题的阶段,但这似乎没有帮助。

当网站不是很繁忙时,大多数崩溃都会发生,尽管IIS没有将其关闭以保持不活动状态。

Windows server 2008 R2(SP 1), IIS Build 7.5.76, 一把umbraco, Sql server 2008

IIS日志:仅显示池的一些回收(每3小时一次) 快速失败检测:禁用

我应该从哪里开始解决这个问题?

3 个答案:

答案 0 :(得分:1)

标准方法是开始制作跟踪日志文件。在应用程序的每个关键点写入详细的日志消息 - 当请求开始时,何时结束,中间某处,进行数据库操作等等。日志文件可能在一天结束时占用千兆字节,但你可以能够承受这一点。然后,当它再次崩溃时,检查日志文件以查看崩溃前它最后做的事情是什么。如果没有足够的细节,请添加更多日志记录并重复。

答案 1 :(得分:1)

WER(Windows错误报告)应该为您进行崩溃转储,除非禁用。崩溃报告的默认位置是c:\ ProgramData \ Microsoft \ Windows \ WER \ ReportQueue \,但据我记忆所知,崩溃的Windows事件日志条目包含转储文件的完整路径(应用程序事件日志) )。把它弹入你的VS并检查出了什么问题。

您也可以尝试安装DebugDiag,但我个人不强烈建议您不要在生产服务器上推荐它,因为它会以不可逆转的方式破坏WER配置以影响其他应用程序。

答案 2 :(得分:0)

我首先在不同的应用程序池上运行风险应用程序,以尽量减少影响 有一个iss属性可以在x分钟内发生5次错误后停止应用程序池重启。
你可以尝试增加这个设置,它应该让你知道这种情况发生的频率,以及一旦它出错就会出错。
如果是wcf服务,您可以启用跟踪日志(记录相当多,甚至可能是您的错误)。

至于要查看的地方,我建议检查堆栈溢出和多线程代码。
这两种情况都可能导致事件日志不包含任何信息。