最近公司服務(wù)器總出現(xiàn)CPU100%占用情況,服務(wù)器配置為雙核Xeon3.0x2,2G ECC內(nèi)存。
發(fā)現(xiàn)是w3wp.exe長(zhǎng)時(shí)間占用大量CPU.出現(xiàn)這種情況應(yīng)該是網(wǎng)站程序存在死循環(huán)等問(wèn)題所致。
在找到問(wèn)題以前可以暫時(shí)采取限制w3wp進(jìn)程CPU使用率的方法保證網(wǎng)站可以將就著工作:
在IIS6下,經(jīng)常出現(xiàn)w3wp.exe的內(nèi)存及CPU占用不能及時(shí)釋放,從而導(dǎo)致服務(wù)器響應(yīng)速度很慢。
解決CPU占用過(guò)多:
1、在IIS中對(duì)每個(gè)網(wǎng)站進(jìn)行單獨(dú)的應(yīng)用程序池配置。即互相之間不影響。
2、設(shè)置應(yīng)用程序池的CPU監(jiān)視,不超過(guò)25%(服務(wù)器為4CPU),每分鐘刷新,超過(guò)限制時(shí)關(guān)閉。
根據(jù)w3wp取得是哪一個(gè)應(yīng)用程序池:
1、在任務(wù)管理器中增加顯示pid字段。就可以看到占用內(nèi)存或者cpu最高的進(jìn)程pid
2、在命令提示符下運(yùn)行iisapp -a。注意,第一次運(yùn)行,會(huì)提示沒(méi)有js支持,點(diǎn)擊確定。然后再次運(yùn)行就可以了。這樣就可以看到pid對(duì)應(yīng)的應(yīng)用程序池。(iisapp實(shí)際上是存放在 C:windowssystem32目錄下的一個(gè)VBS腳本,全名為iisapp.vbs,如果你和我一樣,也禁止了Vbs默認(rèn)關(guān)聯(lián)程序,那么就需要手動(dòng)到該目錄,先擇打開(kāi)方式,然后選“Microsoft (r) Windows Based Script Host”來(lái)執(zhí)行,就可以得到PID與應(yīng)用程序池的對(duì)應(yīng)關(guān)系。)
3、到iis中察看該應(yīng)用程序池對(duì)應(yīng)的網(wǎng)站,就ok了,做出上面的內(nèi)存或CPU方面的限制,或檢查程序有無(wú)死循環(huán)之類(lèi)的問(wèn)題。
解決內(nèi)存占用過(guò)多,可以做以下配置:
1、在IIS中對(duì)每個(gè)網(wǎng)站進(jìn)行單獨(dú)的應(yīng)用程序池配置。即互相之間不影響。
2、設(shè)置應(yīng)用程序池的回收時(shí)間,默認(rèn)為1720小時(shí),可以根據(jù)情況修改。再設(shè)置當(dāng)內(nèi)存占用超過(guò)多少(如500M),就自動(dòng)回收內(nèi)存。
我的設(shè)置如下:
首先是對(duì)CPU的限制:在啟用cpu監(jiān)視后,我設(shè)置該應(yīng)用程序池最大的cpu使用率為50%。設(shè)置刷新cpu時(shí)間為1分鐘,設(shè)置操作為“關(guān)閉”。最大工作進(jìn)程數(shù)設(shè)置為1。這個(gè)意思是,IIS刷新檢測(cè)該獨(dú)立池的CPU使用情況時(shí)間為1分鐘,如果超過(guò)設(shè)置的cpu限制50%,就會(huì)發(fā)出關(guān)閉池的指令,要求池在指定的時(shí)間內(nèi)關(guān)閉。如果池成功在這個(gè)時(shí)間內(nèi)關(guān)閉,IIS會(huì)重啟動(dòng)一個(gè)新池,此段時(shí)間很短,一般不會(huì)有什么感覺(jué),池就重新開(kāi)啟了,對(duì)于訪問(wèn)網(wǎng)站的人基本是不會(huì)有感覺(jué)的。但如果池沒(méi)有在指定時(shí)間內(nèi)關(guān)閉,IIS就會(huì)強(qiáng)行關(guān)閉它一個(gè)刷新CPU時(shí)間。在這個(gè)停止的時(shí)間內(nèi),網(wǎng)站無(wú)法訪問(wèn),提示“Service Unavaliable”。
新聞熱點(diǎn)
疑難解答
圖片精選