win2003+iis6.0環境下w3wp.exe佔用過高的解決方案
前段時間,朋友的伺服器出現w3wp.exe程序一直處在80%至90%左右,嚴重影響其它使用者網站的訪問效率。順便說一下,朋友的伺服器為Win2003系統,大約有約100左右個網站。出現這樣的問題,只有找到對應的網站,並檢查是否被掛馬。在此記錄一下解決這次事件的過程。
因為朋友的伺服器的網站較多,不同型別的網站採用不同的“應用程式池”,而不是每個網站對應不同的“應用程式池”,所以先找出對應的“應用程式池”名。
1.工作管理員>檢視>選擇列>PID(程序識別符號)
開啟“Windows 工作管理員”,調出PID列。目的是找出CPU佔用率高的w3wp.exe映像名稱的PID值,如下圖
2、註冊CScript
首先,在cmd中輸入iisapp -a並回車
此時,系統會提示:此指令碼不能與WScript工作。
接著,系統會提示是否註冊CSript,選擇“是”。
最後,系統會提示“成功註冊了CScript”
3、註冊成功後再執行iisapp -a命令
執行iisapp -a命令,系統列出w3wp的PID及對應的應用池名,內容如下:
Microsoft Windows [版本 5.2.3790]
(C) 版權所有 1985-2003 Microsoft Corp.
C:\Documents and Settings\Administrator>iisapp -a
W3WP.exe PID: 4880 AppPoolId: WinWebMail
W3WP.exe PID: 5028 AppPoolId: DefaultAppPool
W3WP.exe PID: 4148 AppPoolId: apppool005001
W3WP.exe PID: 3492 AppPoolId: apppool005003
W3WP.exe PID: 6116 AppPoolId: apppool020001
W3WP.exe PID: 5652 AppPoolId: apppool010001
W3WP.exe PID: 5144 AppPoolId: apppool001001
W3WP.exe PID: 588 AppPoolId: apppool005002
W3WP.exe PID: 2568 AppPoolId: apppool025001
4、通過PID值查詢相應的應用池名,利用排除法關閉站點
比如W3WP.exe PID: 5144佔用CPU百分之百,那麼在iis裡對應的是apppool001001。
5、關閉站點,觀察CPU狀態
如果一個“應用程式池”多應多個網站,那麼只有一個個的關閉這些網站,觀察CPU狀態。
關掉其中一個站點,如果CPU五分鐘下降了,就說明是這個站點的問題
6、CPU使用超標的解決方法
對於CPU使用超標的解決方法有多種可能性,可以通過“應用程式池”屬性中的記憶體回收、效能監視等方式嘗試,關於“應用程式池”屬性中的相關內容自行百度,也可檢查網站是否被掛馬等。
7、重啟iis,繼續觀察CPU使用狀態
只有確定是哪個網站導致CPU佔用率過高,才能好對症下藥,找出原因所在。由於朋友伺服器的一個應用程式池對應若干個網站,我所採用的方法是關掉該程式池對應的所有網站,然後直接重啟伺服器,觀察CPU使用狀態。如果沒有問題,就開啟一個站點,並觀察。這樣利用排除法找出有問題的網站。