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較多的請求了,剩下的工作就是去分析這個請求里面有哪些操作占用的資源比較多了,筆者遇到的最常見的問題是在循環里面進行開銷較大的操作,比如連接數據庫等。