IIS挂起疑难解答

时间:2009-03-13 17:21:11

标签: iis-6 .net-2.0 windows-server-2003 hang

我正在IIS 6(Windows Server 2003)上运行一个偶尔会挂起的网站。

  

时间轴:

     

发布到野外,网站运行良好   为期3天。

     

网站每次请求都会挂起,直到   该网站已停止并启动。

     

网站运行2周,没有   问题

     

网站每次请求都会挂起,直到   网站重新启动。

我们在挂起之前会看到一些应用程序日志条目: 故障应用程序w3wp.exe,故障模块未知,版本0.0.0.0故障地址-------。

网站上安装的应用程序是用.Net 2.0编写的。

有人可以指导我解决此问题吗? 谢谢!

3 个答案:

答案 0 :(得分:2)

您最好的选择可能是使用adplus来捕获挂起的w3wp进程的内存转储,然后使用windbg + sos扩展来尝试确定挂起的原因。

你可以在这里获得adplus和Windbg: http://www.microsoft.com/whdc/devtools/debugging/default.mspx

此外,Tess Ferrandez的博客是学习如何使用Windbg分析内存转储的信息的绝对金矿。她甚至有一套实验室,你可以针对具体情况进行实验。

http://blogs.msdn.com/tess/default.aspx

答案 1 :(得分:0)

有很多原因导致这种情况发生。几年前,我在生产中的Web项目中发生了这种情况,并且它打电话给微软来修复它。我希望我能给你具体细节,但这是我记得的。

.NET缓存Web应用程序中的文件夹。服务器上有一个注册表项(不记得在哪里)设置文件夹限制(信不信由你)。默认情况下,限制设置为150个文件夹。如果您的Web应用程序中有多个文件夹,并且您尝试访问第151个文件夹,则会导致IIS崩溃。

是的,这听起来很疯狂,但相信我,我花了几周时间与微软一起,直到我们发现了崩溃的原因。当时的答案是提高注册表中的限制并重新启动服务器。这是在几年前,我希望在以后的更新中修复了这个问题,但是如果您使用的是旧版本的Server 2003,我会向您提供此信息。

对不起,我无法提供更具体的细节,但我只想告诉您我的经历,以防这听起来像是您的问题。

答案 2 :(得分:0)

确保将IIS设置为能够自动回收其进程,如果是内存泄漏,可能有助于解决问题。 (好吧,以解决问题没有解决)

我的建议是给你应用程序自己的应用程序池,这样你就可以100%确定你认为拉动服务器的应用程序,当发生这种情况时应用程序日志的剂量是多少?

根据您提供的信息,它听起来像是内存泄漏或打开数据库连接/线程问题。

P.S 如果您使用N2,则存在一个已知问题,即当IIS回收时,它将无法恢复。