Windows XP是美國微軟公司研發(fā)的基于X86、X64架構(gòu)的PC和平板電腦使用的操作系統(tǒng),于2001年8月24日發(fā)布RTM版本,并于2001年10月25日開始零售。其名字中“XP”的意思來自英文中的“體驗(Experience)”。該系統(tǒng)是繼Windows 2000及Windows ME之后的下一代Windows操作系統(tǒng),也是微軟首個面向消費者且使用Windows NT5.1架構(gòu)的操作系統(tǒng)。
對于互聯(lián)網(wǎng)信息服務(wù)管理員來說,在管理的過程中經(jīng)常會碰到Web服務(wù)器CPU占用100%的情況,而這主要是w3wp.exe進(jìn)程占用CPU內(nèi)存達(dá)到100%,下面就針對這一現(xiàn)象來介紹XP系統(tǒng)出現(xiàn)該問題的常見原因和具體解決方案。
w3wp.exe的解釋:全名:IISApplicationPoolProcess,w3wp.exe是IIS工具的一部,w3wp.exe是在IIS(因特網(wǎng)信息服務(wù)器)與應(yīng)用程序池相關(guān)聯(lián)的一個進(jìn)程,如果你有多個應(yīng)用程序池,就會有對應(yīng)的多個w3wp.exe的進(jìn)程實例運行。這個進(jìn)程用來分配大量的系統(tǒng)資源。
常見原因如下:
1.Web訪問量大,從而服務(wù)器壓力大而引起的
這個也是最常見的情況。如果Web訪問量大,特別是同時在線人數(shù)過多,處理的Requests Current(當(dāng)前請求數(shù))過高,就會同時對IIS和服務(wù)器造成較大的壓力。特別是服務(wù)器需要不斷的運算,往客戶端發(fā)送生成后的頁面,這些都需要占用大量的CPU資源,從而造成Cpu 100%。
2.動態(tài)頁面(.aspx)的程序邏輯復(fù)雜程度
這個問題,對w3wp.exe的CPU占用來說也是蠻嚴(yán)重的,可能在訪問量級比較小的情況下并沒有多少影響,但是在高并發(fā)的網(wǎng)站上面來說,特別是Asp.NET的Requests Current超過250的時候,將會是w3wp.exe占用CPU的一個重要的因素。
我曾經(jīng)碰到過這樣一個情況,兩個web(A和B)在兩臺配置相當(dāng)?shù)姆⻊?wù)器中部署,且兩個站點的訪問量都很大,訪問頁面都集中在兩個站點的兩個單獨頁面,且這兩個頁面的IIS連接數(shù)都是50個左右,但是頁面程序的復(fù)雜程度就錯了很多,A站點中的頁面,只有幾個簡單的Repeater綁定,而B站點中的頁面,則有大量的綁定、字符串過濾替換、Repeater嵌套綁定等等。這樣的情況,在大流量、高并發(fā)的環(huán)境中,A站點在IIS連接數(shù)達(dá)到3W多的時候,CPU占用仍然是50%左右,而B站點在IIS連接數(shù)達(dá)到7K左右的時候,CPU就90%多了,造成了服務(wù)器的壓力很大,并且IIS遭到了堵塞。
3.頁面程序中有死循環(huán)
如果Web訪問量不大,但是CPU卻占用很高,那么頁面中的程序肯定有死循環(huán)或者性能比較嚴(yán)重的程序語句。
4.Http方式下載的站點
如果站點是HTTP形式下載站,也遇到過w3wp.exe占用CPU 100%的情況。
5.服務(wù)器資源不會自動釋放
有時,一個站點的流量在一個小時內(nèi)陡增,結(jié)果操作系統(tǒng)分配了比較多的CPU資源,但是當(dāng)流量下去后,w3wp.exe占用的CPU并沒有及時釋放,仍然在保持在90%以上。
6.對IIS日志文件操作
比如此時分析IIS日志文件里面的數(shù)據(jù),把IISLog日志導(dǎo)入到數(shù)據(jù)庫中等操作,也會造成此現(xiàn)象。
解決辦法:
一、快速定位到出問題的站點
1、利用iisapp-a命令,快速的定位到出問題的站點。當(dāng)然如果當(dāng)前服務(wù)器只跑了一個web站點,那么此步驟可以跳過。
在cmd中輸入iisapp-a,會出現(xiàn)下圖中的信息:
2、當(dāng)然,這個要求你每個站點,都要有獨立的應(yīng)用程序池與之對應(yīng),應(yīng)用程序池的名稱,最好就是站點的名稱,如下圖:
3、關(guān)于IIS的應(yīng)用程序池的配置,這里就不說了,不懂的可以search下。之后,再打開任務(wù)管理器,如下圖:
4、觀察進(jìn)程為w3wp.exe的,查看那個CPU占用的高,再利用其PID于iisapp中列出的結(jié)果對比,就能輕松的找出是那個站點占用的CPU過高了。
二、重啟IIS和應(yīng)用程序池
此步是緊急處理,一般都是治標(biāo)不治本的步驟。如果你的站點搭建的有負(fù)載均衡(負(fù)載均衡、NLB),那么請在負(fù)載均衡(負(fù)載均衡、NLB)把當(dāng)前服務(wù)器下了,然后重啟。如果你沒有負(fù)載均衡(負(fù)載均衡、NLB),而且你的站點又是在線的,那么,就悲劇10多秒吧,短暫的不能訪問吧。
三、給頁面加上頁面級別緩存
如果Web是Asp.Net程序,那么請一定要<%@ OutputCache Duration="10" VaryByParam="none"%>。但是有好多人都沒有用好OutputCache,導(dǎo)致經(jīng)常出現(xiàn)下載頁面的問題,所以都放棄了使用,這里有OutputCache導(dǎo)致頁面下載的解決辦法。
OutputCache非常有用,好處有三:直接從內(nèi)存讀頁面,頁面響應(yīng)速度更快,用戶體驗更好;大大的降低了服務(wù)器的壓力,特別是對于高并發(fā)的網(wǎng)站,特別是CPU的壓力;減少了DB的強求,降低DB(數(shù)據(jù)庫)的壓力。
四、檢查頁面邏輯
如果WEB流量很低,但是還有w3wp.exe(IIS) CPU占用100%左右的情況,那么就檢查頁面的代碼邏輯吧,很有可能是死循環(huán)或大量的運算導(dǎo)致。
以上便是關(guān)于w3wp.exe進(jìn)程占用CPU內(nèi)存100%問題的介紹,其中介紹了出現(xiàn)該情況的原因,同時也講解了具體的解決辦法,如果互聯(lián)網(wǎng)信息服務(wù)管理員或用戶碰到該問題無法解決的話,就可以嘗試用上面的方法來解決。
Windows XP服役時間長達(dá)13年,產(chǎn)生的經(jīng)濟(jì)價值也較高。2014年4月8日,微軟終止對該系統(tǒng)的技術(shù)支持,但在此之后仍在一些重大計算機安全事件中對該系統(tǒng)發(fā)布了補丁。
|