我正在IIS 6(Windows Server 2003)上运行一个偶尔会挂起的网站。
时间轴:
发布到野外,网站运行良好 为期3天。
网站每次请求都会挂起,直到 该网站已停止并启动。
网站运行2周,没有 问题
网站每次请求都会挂起,直到 网站重新启动。
我们在挂起之前会看到一些应用程序日志条目: 故障应用程序w3wp.exe,故障模块未知,版本0.0.0.0故障地址-------。
网站上安装的应用程序是用.Net 2.0编写的。
有人可以指导我解决此问题吗? 谢谢!
答案 0 :(得分:2)
您最好的选择可能是使用adplus来捕获挂起的w3wp进程的内存转储,然后使用windbg + sos扩展来尝试确定挂起的原因。
你可以在这里获得adplus和Windbg: http://www.microsoft.com/whdc/devtools/debugging/default.mspx
此外,Tess Ferrandez的博客是学习如何使用Windbg分析内存转储的信息的绝对金矿。她甚至有一套实验室,你可以针对具体情况进行实验。
答案 1 :(得分:0)
有很多原因导致这种情况发生。几年前,我在生产中的Web项目中发生了这种情况,并且它打电话给微软来修复它。我希望我能给你具体细节,但这是我记得的。
.NET缓存Web应用程序中的文件夹。服务器上有一个注册表项(不记得在哪里)设置文件夹限制(信不信由你)。默认情况下,限制设置为150个文件夹。如果您的Web应用程序中有多个文件夹,并且您尝试访问第151个文件夹,则会导致IIS崩溃。
是的,这听起来很疯狂,但相信我,我花了几周时间与微软一起,直到我们发现了崩溃的原因。当时的答案是提高注册表中的限制并重新启动服务器。这是在几年前,我希望在以后的更新中修复了这个问题,但是如果您使用的是旧版本的Server 2003,我会向您提供此信息。
对不起,我无法提供更具体的细节,但我只想告诉您我的经历,以防这听起来像是您的问题。
答案 2 :(得分:0)
确保将IIS设置为能够自动回收其进程,如果是内存泄漏,可能有助于解决问题。 (好吧,以解决问题没有解决)
我的建议是给你应用程序自己的应用程序池,这样你就可以100%确定你认为拉动服务器的应用程序,当发生这种情况时应用程序日志的剂量是多少?
根据您提供的信息,它听起来像是内存泄漏或打开数据库连接/线程问题。
P.S 如果您使用N2,则存在一个已知问题,即当IIS回收时,它将无法恢复。