我有几个ASP.NET Web应用程序在IIS 6上运行。今天,我从IIS的CPU使用率非常高,通常甚至没有注册。 我如何解决这个问题?
编辑:我已经把这个问题缩小到1使用应用程序池的Web应用程序build议,我procmon和proc浏览器运行,并看到我可以找出与..这是一个非常恒定的CPU使用率。
我不能说我们有最新的补丁,不幸的是我没有控制,但我有pipe理权限。
再次…我最喜欢的食谱…下载sysinternals和使用procmon,filemon / regmon,看看有什么东西在那里敲打。 使用进程资源pipe理器来查看是否有从打开的文件句柄列表中打开的exception文件。
IIS的日志中是否显示了任何内容?
如果是处理特定文件或脚本的东西,您可能会从进程pipe理器的打开文件句柄函数中获得提示。
什么样的内容IIS服务发生这种情况?
而且,当然…最新的更新/服务包应用?
如果您具有对服务器的pipe理和远程桌面访问权限,则可以使用将w3wp.exe进程与其所属的IIS 6应用程序池相匹配的脚本(以下示例)。 因此,如果您发现特定的应用程序池需要太多RAM或处理器,则可以查看该池中正在运行的应用程序,并开始缩小它们的范围。 我们一次又一次地执行了类似的故障排除,最终只花了一个有问题的应用程序池,并将其中的3个应用程序分离到自己的应用程序池中,因为它们一起导致了内存问题。 在那与开发人员优化代码之间,问题就解决了。 如果您的网站正在进行数据库调用,则可能还需要查看两台服务器之间的连接,以确保您没有遇到导致某些CPU高峰的超时。
我写了一个示例HTA,将按照我的指定枚举应用程序池。 你可能会发现这里的HTA: http : //www.scriptinganswers.com/forum2/forum_posts.asp? TID=3222
你在自己的应用程序池中运行多个网站吗?
我使用debugdiag,这是从M $免费下载。 您可以等待挂起或按需运行。 然后您可以使用其工具分析转储,或使用winDBG。