IIS下经常会出现w3wp.exe进程的CPU使用率达到100%的情况,在IIS7出现之前,要想确定问题所在,可以通过WinDbg来调试分析,但整个过程对技术水平要求非常高,可以参考http://blogs.technet.com/b/marcelofartura/archive/2006/09/15/troubleshooting-iis-100-cpu-issues-step-by-step-intermediary.aspx这篇文章来尝试,但需要有挑战自我极限的思想准备。在IIS7中就比较简单了,可以通过IIS7的工作进程模块在IIS管理器中直接看到占用资源较多的请求。
点击IIS服务器的根节点,在功能视图点击“工作进程”图标:
进入以下界面,可以看到各个应用程序池的CPU使用情况:
很明显,第一个应用程序池的CPU使用率很高,点击进入以下页面,可以看到具体是那个请求占用的CPU时间:
这下就可以定位出占用cpu较多的请求了,剩下的工作就是去分析这个请求里面有哪些操作占用的资源比较多了,笔者遇到的最常见的问题是在循环里面进行开销较大的操作,比如连接数据库等。