1. 程式人生 > >win2003+iis6.0環境下w3wp.exe佔用過高的解決方案

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使用狀態。如果沒有問題,就開啟一個站點,並觀察。這樣利用排除法找出有問題的網站。