mysql-nt.exe w3wp.exe cpu 100%_w3wp.exe(IIS ) CPU 占用 100% 的常见原因及解决办法
對(duì)于IIS管理員來(lái)說(shuō),經(jīng)常會(huì)碰到Web服務(wù)器CPU占用100%的情況,以下是個(gè)人的日常工作總結(jié)和一些解決辦法,主要用來(lái)剖析w3wp.exe(IIS?)占用CPU?100%的一些原因?和解決方案,希望能對(duì)你有所幫助
w3wp.exe的解釋:全名,IIS?Application?Pool?Process。?w3wp.exe是IIS工具的一部。w3wp.exe是在IIS(因特網(wǎng)信息服務(wù)器)與應(yīng)用程序池相關(guān)聯(lián)的一個(gè)進(jìn)程,如果你有多個(gè)應(yīng)用程序池,就會(huì)有對(duì)應(yīng)的多個(gè)w3wp.exe的進(jìn)程實(shí)例運(yùn)行。這個(gè)進(jìn)程用來(lái)分配大量的系統(tǒng)資源。
引起?w3wp.exe(IIS?)?Cpu占用100%的常見(jiàn)原因如下:
1.?Web?訪問(wèn)量大,從而服務(wù)器壓力大而引起的
這個(gè)也是最常見(jiàn)的情況。如果?Web訪問(wèn)量大,特別是同時(shí)在線人數(shù)過(guò)多,處理的Requests?Current(當(dāng)前請(qǐng)求數(shù))過(guò)高,就會(huì)同時(shí)對(duì)IIS和服務(wù)器造成較大的壓力。特別是?服務(wù)器需要不斷的運(yùn)算,往客戶端發(fā)送生成后的頁(yè)面,這些都需要占用大量的CPU資源,從而造成Cpu?100%
2.?動(dòng)態(tài)頁(yè)面(.aspx)的程序邏輯復(fù)雜程度
這個(gè)問(wèn)題,對(duì)?w3wp.exe的CPU占用?來(lái)說(shuō)也是蠻嚴(yán)重的,可能在訪問(wèn)量級(jí)比較小的情況下并沒(méi)有多少影響,但是在高并發(fā)的網(wǎng)站上面來(lái)說(shuō),特別是Asp.Net的Requests?Current超過(guò)250的時(shí)候,將會(huì)是w3wp.exe占用CPU的一個(gè)重要的因素。
我曾經(jīng)碰到過(guò)這樣一個(gè)情況,兩個(gè)?web(A和B)在兩臺(tái)?配置相當(dāng)?shù)?服務(wù)器中部署,且兩個(gè)站點(diǎn)的訪問(wèn)量都很大,訪問(wèn)頁(yè)面都集中在兩個(gè)站點(diǎn)的兩個(gè)單獨(dú)頁(yè)面,且這兩個(gè)頁(yè)面?的IIS連接數(shù)都是50個(gè)左右,但是頁(yè)面程序的復(fù)雜程度就錯(cuò)了很多,A站點(diǎn)中的頁(yè)面,只有幾個(gè)?簡(jiǎn)單的Repeater綁定,?而B(niǎo)站點(diǎn)中的頁(yè)面,則有大量的綁定、字符串過(guò)濾替換、Repeater嵌套綁定等等。這樣的情況,在?大流量、高并發(fā)的環(huán)境中,A站點(diǎn)?在IIS連接數(shù)?達(dá)到3?W多的時(shí)候,CPU占用仍然是50?%左右,而B(niǎo)站點(diǎn)在IIS連接數(shù)?達(dá)到7K左右的時(shí)候,CPU就90%多了,造成了?服務(wù)器的壓力很大,并且IIS遭到了堵塞。
3.?頁(yè)面程序中有死循環(huán)
如果Web訪問(wèn)量不大,但是CPU卻占用很高,那么頁(yè)面中的程序肯定有死循環(huán)或者性能比較嚴(yán)重的?程序語(yǔ)句
4.?Http方式下載的站點(diǎn)
如果站點(diǎn)是HTTP形式下載站,也遇到過(guò)w3wp.exe占用CPU?100%的情況
5.?服務(wù)器資源不會(huì)自動(dòng)釋放
有時(shí),一個(gè)站點(diǎn)的流量在一個(gè)小時(shí)內(nèi)陡增,結(jié)果操作系統(tǒng)分配了比較多的?CPU資源,但是當(dāng)流量下去后,w3wp.exe占用的CPU并沒(méi)有及時(shí)釋放,仍然在保持在90%以上
6. 對(duì) IIS 日志文件操作
比如此時(shí)分析 IIS 日志文件里面的數(shù)據(jù),把 IIS Log 日志導(dǎo)入到數(shù)據(jù)庫(kù)中等操作,也會(huì)造成此現(xiàn)象
解決辦法:
1.?快速定位到出問(wèn)題的站點(diǎn)
利用iisapp?-a命令,快速的定位到出問(wèn)題的站點(diǎn)。當(dāng)然如果當(dāng)前服務(wù)器只跑了一個(gè)web站點(diǎn),那么此步驟可以跳過(guò)
在?cmd中?輸入iisapp?-?a,會(huì)出現(xiàn)下圖中的信息:
當(dāng)然,這個(gè)要求你沒(méi)個(gè)站點(diǎn),都要有獨(dú)立的應(yīng)用程序池與之對(duì)應(yīng),應(yīng)用程序池的名稱,最好就是站點(diǎn)的名稱,如下圖:
關(guān)于?IIS的應(yīng)用程序池的配置,這里就不說(shuō)了,不懂的可以search下
之后,再打開(kāi)任務(wù)管理器,如下圖:
觀察進(jìn)程為?w3wp.exe的,查看那個(gè)CPU占用的高,再利用其PID于iisapp中列出的結(jié)果對(duì)比,就能輕松的找出是那個(gè)站點(diǎn)占用的CPU過(guò)高了
2.?重啟?IIS和?應(yīng)用程序池
此步是緊急處理,一般都是治標(biāo)不治本的步驟。如果你的站點(diǎn)搭建的有?負(fù)載均衡(負(fù)載均衡、NLB),那么請(qǐng)?jiān)?負(fù)載均衡(負(fù)載均衡、NLB)把當(dāng)前服務(wù)器下了,然后重啟。如果你沒(méi)有?負(fù)載均衡(負(fù)載均衡、NLB),而且你的站點(diǎn)又是在線的,那么,就悲劇10多秒吧,短暫的不能訪問(wèn)吧
3.?給頁(yè)面加上頁(yè)面級(jí)別緩存
如果Web是Asp.Net程序,那么請(qǐng)一定要。但是有好多人都沒(méi)有用好OutputCache,導(dǎo)致經(jīng)常出現(xiàn)下載頁(yè)面的問(wèn)題,所以都放棄了使用,這里有
OutputCache?非常有用,好處有三:直接從內(nèi)存讀頁(yè)面,頁(yè)面響應(yīng)速度更快,用戶體驗(yàn)更好;大大的降低了服務(wù)器的壓力,特別是對(duì)于高并發(fā)的網(wǎng)站,特別是CPU的壓力;減少了DB的強(qiáng)求,降低DB(數(shù)據(jù)庫(kù))的壓力。
4.?檢查頁(yè)面邏輯
如果WEB流量很低,但是還有w3wp.exe(IIS?)?CPU占用100%左右的情況,那么就檢查頁(yè)面的代碼邏輯吧,很有可能是死循環(huán)或大量的運(yùn)算導(dǎo)致。
總結(jié)
以上是生活随笔為你收集整理的mysql-nt.exe w3wp.exe cpu 100%_w3wp.exe(IIS ) CPU 占用 100% 的常见原因及解决办法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 做简单的android 软件推荐,And
- 下一篇: java面向对象(引用类型--参数传递)