我目前有一个运行IIS 7的Windows 2008服务器的问题。服务器运行几个网站,但似乎只有一个特定的网站的问题。
每隔一段时间,整个服务器都会慢慢爬行,几乎所有请求都会超时! 总而言之,当我们login去查看时,总是会有一个IIS进程使用大约90%的cpu。 通过查看IIS中的工作进程,通常会有一两个请求长时间运行。 它们总是处于ExecuteRequestHandler状态,而ManagedPipeline作为模块名称,目前我正在运行的是7686248(这是什么单位,它不说?)。 这也并不总是相同的页面,事实上,我们已经看到至less有3个不同的页面下列出的URL。
看起来,让服务器恢复正常的唯一方法是杀死90%的进程!
该网站运行在.Net 4.0和它的代码是非常相似的其他网站在服务器上没有问题!
我如何开始解决这个问题?
这似乎是ASP.NET应用程序坏了,闻起来像一个非常长/无限循环。
我将启用失败的请求跟踪,并根据每个内容和每个状态代码(使用范围100-600)花费超过60秒的请求限制它。
另外,虽然没有在UI中公开,但你也可以configuration一个命令行来运行你可以生成进程转储的地方,这样你以后可以使用一个debugging器(比如Windbg + SOS.dll)来查看请求的确切位置以及他们在做什么? 这可能是最好的方法,但它需要一些Windowsdebugging工具的知识http://www.microsoft.com/whdc/devtools/debugging/default.mspx 。
更简单的select是你也可以testing你的应用程序,特别是你看到的URL和页面需要花费很多时间(顺便说一句,时间以毫秒为单位,所以你的页面已经超过了2个小时!!!),你可以使用System.Diagnostics或Page.Trace,并将它们路由到FREB日志,这样你将得到有意义的信息。
也许看看启用额外的日志logging: http : //technet.microsoft.com/en-us/library/cc731798%28WS.10%29.aspx