認(rèn)識w3wp.exe進程,從根本上解決占用資源較大問題
直接在任務(wù)管理器中結(jié)束進程是不起作用的,結(jié)束后不久它會執(zhí)行啟動,要想結(jié)束它可以在iis中找到相應(yīng)的應(yīng)用程序池停止相應(yīng)的應(yīng)用程序池工作。
這些都不是解決辦法,它的根本問題是你的那個網(wǎng)站程序有問題,在找到問題以前可以先打開iis找到應(yīng)用程序池先用右鍵屬性中設(shè)置“性能”把其中的cpu設(shè)成大于60%關(guān)閉應(yīng)用程序池,把關(guān)閉時間和開啟時間設(shè)短一些比如10秒,這樣當(dāng)您的網(wǎng)站程序大量占用系統(tǒng)資源時iis自動快速回收進程并且快速啟動進程,您的網(wǎng)站暫時還可以將就著工作。
要解決根本問題還要從程序查起,您可以在iis中的應(yīng)用程序池中右鍵創(chuàng)建多個應(yīng)用程序池,然后在每個主機頭中的文件家選項的底部將應(yīng)用程序池對應(yīng)道剛才建好的應(yīng)用程序池,然后一個一個關(guān)閉在任務(wù)管理器中看看是哪個程序占用的資源較大。
下面是一些網(wǎng)友的相關(guān)貼子也許對大家有幫助
朋友的web服務(wù)器一直運行正常,但這幾天cpu占用率一直將近100%,遂去看個究竟。
服務(wù)器采用windows 2003, 網(wǎng)站使用asp+access數(shù)據(jù)庫, 查看進程列表發(fā)現(xiàn)w3wp.exe 占用了70%以上的cpu,
查看web日志,站點訪問量不大,查看tcp連接也不多。用net stop w3svc停掉web服務(wù),cpu占用立即正常,net start w3svc啟動web后不久現(xiàn)象又出來了。停止所有虛擬站點,新建一個虛擬站點發(fā)現(xiàn)并沒有問題,懷疑是站點本身的代碼問題。
檢查首頁代碼,大致是如下結(jié)構(gòu):
粗看一下并沒有問題,但就是這段代碼造成了w3wp.exe占用大量cpu,難道是死循環(huán)?似乎沒有理由。在循環(huán)體內(nèi)加入計數(shù),發(fā)現(xiàn)確實是死循環(huán),說明rs.eof一直為false,加入如下代碼:
if rs.eof = true then response.write "eof is true"
if rs.eof = false then response.write "eof is false"
發(fā)現(xiàn)輸出竟然是eof is true eof is false, 說明無法判斷rs.eof的值,為何如此百思不得其解。檢查數(shù)據(jù)庫,發(fā)現(xiàn)庫中并沒有mytable表, 如果該表不存在,rs.open "select * from mytable", conn 就會出錯,為何沒有出錯,很有可能捕獲的異常被忽略了。
檢查包含文件conn.asp, 發(fā)現(xiàn)了異常處理代碼:
on error resume next
原來問題在此。
on error resume next忽略了查詢表時的失敗以及后續(xù)的錯誤,造成進入死循環(huán)。
那為何網(wǎng)站本來運行正常,現(xiàn)在卻找不到mytable表了呢?仔細(xì)檢查網(wǎng)站才發(fā)現(xiàn)“有‘客'自遠(yuǎn)方來”,上傳了后門工具、刪除了多張數(shù)據(jù)表,害我忙活了一天。
更多的內(nèi)容大家還可以到:http://www.microsoft.com/china/technet/security/guidance/secmod93.mspx
查找更詳細(xì)的安全設(shè)置
windows2003 iis6.0假死問題解決
這幾天服務(wù)器總是運行緩慢,遠(yuǎn)程登錄后發(fā)現(xiàn)一個w3wp.exe的進程占用了100% cpu。
問題的原因最終找到兩個:
1.采用的jet 數(shù)據(jù)庫連接方式存在問題:http://support.microsoft.com/?id=838306
補丁下載:
chs:windowsserver2003-kb838306-x86-chs.exe
enu:windowsserver2003-kb838306-x86-enu.exe
2.將access數(shù)據(jù)庫擴展名改為asp
下面是我的差錯過程和解決方案:
搜索一下發(fā)現(xiàn)類似問題還真不少,那個w3wp的進程是iis6.0的應(yīng)用程序池,網(wǎng)上的說法有兩種,一是因為asp或者asp.net代碼中含有死循環(huán)引起的。但是服務(wù)器上這么多網(wǎng)站,誰知道那個網(wǎng)站出了問題。二是由于上面的jet連接數(shù)據(jù)庫方式的bug引起的,下載838306的補丁,或者升級到sp1可以解決這個問題,但是打了這個補丁后,有些網(wǎng)站的問題依然存在。
又去搜索,有人說將每個網(wǎng)站建立獨立的應(yīng)用程序池,應(yīng)用程序池的安全性帳戶設(shè)為本地服務(wù)即可。方法如下:
首先新建應(yīng)用程序池:
然后將網(wǎng)站的應(yīng)用程序池指向剛才建立的應(yīng)用程序池:
在建立完所有應(yīng)用程序池后,統(tǒng)一修改應(yīng)用程序池的屬性:
將應(yīng)用程序池安全帳戶指定為本地服務(wù):
設(shè)置完這些之后,問題依然存在,這樣一個網(wǎng)站出現(xiàn)問題,不致影響其他網(wǎng)站,但是這個網(wǎng)站仍然占用大量資源,導(dǎo)致其它網(wǎng)站響應(yīng)緩慢。不過在任務(wù)管理器中出現(xiàn)了每個應(yīng)用程序池的進程,因此可以找到具體出問題的進程了。
下面是尋找出錯網(wǎng)站的過程:要找到這個網(wǎng)站,必須把有問題的進程跟該網(wǎng)站的應(yīng)用程序池聯(lián)系起來。首先設(shè)置任務(wù)管理器的查看方式,加入pid的顯示:
然后再命令行運行iisapp -a,可以看到pid跟應(yīng)用程序池的對應(yīng)關(guān)系:
再去iis中看該應(yīng)用程序池對應(yīng)的網(wǎng)站,有問題的網(wǎng)站就找到了,剩下的就是這個網(wǎng)站代碼中的問題了。
在某位網(wǎng)站管理員的糾纏不休下,我終于無法忍受,幫他找錯誤- - 無數(shù)次配置iis,網(wǎng)站程序也換了,該升級的也升級了,問題還是存在,黔驢技窮,把網(wǎng)站下載到本地看看到底怎么回事。當(dāng)我試圖打開他的數(shù)據(jù)庫的時候,問題出現(xiàn)了:
他的數(shù)據(jù)庫是.asp的擴展名,要先修改為.mdb才能打開,但是當(dāng)我點擊要改名字的時候,我的電腦沒有響應(yīng)了~!看來問題在這個數(shù)據(jù)庫了。
用命令行rename之后,打開數(shù)據(jù)庫,修復(fù),似乎沒有任何問題,但是再改為.asp時,又出現(xiàn)了剛才的問題。哈~原來是.asp的擴展名在作怪。
但是我試著將其他的數(shù)據(jù)庫改為.asp,沒有問題。根本原因不得而知,望知情者告知。
最后,在iis中隨便添加了一個isapi對應(yīng)到mdb,造成mdb無法執(zhí)行,防止下載,將所有的.asp的數(shù)據(jù)庫改回.mdb,問題解決。
1.w3wp.exe,應(yīng)用程序,應(yīng)用程序池之間的關(guān)系
一個應(yīng)用程序池可以包含多個應(yīng)用程序,一個應(yīng)用程序池創(chuàng)建一個w3wp.exe進程.那么我們就不能簡單的說一個應(yīng)用程序?qū)?yīng)一個w3wp.exe進程了!
其實是多個應(yīng)用程序?qū)?yīng)一個w3wp.exe進程的.
2.如何啟動和關(guān)閉w3wp.exe這個進程
w3wp.exe這個進程將在你訪問www應(yīng)用程序的時候啟動.有人就會這么問了:"我啟動了一個web應(yīng)用程序,發(fā)現(xiàn)系統(tǒng)自動創(chuàng)建了一個w3wp.exe進程。但我關(guān)閉這個web應(yīng)用程序后,發(fā)現(xiàn)這個剛創(chuàng)建的w3wp.exe進程還在,請問如何關(guān)閉該進程。"
這個進程不會在你關(guān)閉了這個程序以后,就馬上關(guān)閉的.那是因為http是無連接的訪問,當(dāng)你關(guān)閉了web網(wǎng)頁,不會返回相應(yīng)的關(guān)閉信息,所以w3wp.exe這個進程不會因為你關(guān)閉了web應(yīng)用程序爾關(guān)閉.
那么如何關(guān)閉這個進程呢?在應(yīng)用程序池的配置中,"空閑超時"中設(shè)定合適的時間,系統(tǒng)默認(rèn)的是20分鐘.設(shè)定好指定的時間,那么在這個時間范圍內(nèi)沒有在訪問應(yīng)用程序,那么系統(tǒng)會自動的關(guān)閉w3wp.exe這個進程的.而不需要我們?nèi)藶榈母深A(yù)的.
要是你有這個精力的話,也可以在windows任務(wù)管理器里面,結(jié)束這個進程的生命(^_^)!
3.如何讓w3wp.exe進程長時間的運行.
w3wp.exe這個進程的默認(rèn)生命是1740分鐘,但依然是在這種默認(rèn)的自然規(guī)律下,w3wp.exe將在自己失業(yè)20分鐘后,被系統(tǒng)直接槍殺.
這樣就可以看出,要想讓w3wp.exe長時間的生存,那我們可以通過”空閑超時”不作處理來達到我們的目的.
這樣可是缺點多多,但是為了達到個人的私欲,這又算什么.本來也不是什么正式的項目.
4.如何降低w3wp.exe占用的內(nèi)存和cpu
結(jié)合網(wǎng)上的諸多建議,主要的解決辦法是:
a.在iis中對每個網(wǎng)站進行單獨的應(yīng)用程序池配置;
b.合理的配置你的應(yīng)用程序池;
相關(guān)文章
Windows?Server?2012?R2服務(wù)器安裝與配置的完整步驟
擁有正確安裝Windows?server?2012?r2的方法可以節(jié)省我們很多的時間,下面這篇文章主要給大家介紹了關(guān)于Windows?Server?2012?R2服務(wù)器安裝與配置的完整步驟,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
Windows?Server?2016遠(yuǎn)程桌面如何允許多用戶同時登錄
我們經(jīng)常會遇到多人同時登錄操作同一臺服務(wù)器的需求,有什么好的解決方法呢,下面就一起來看看吧2022-06-06
win2003 iis 不支持請求(iis iso)的解決方法分析
今天有網(wǎng)友說,本站提供的文件無法下載,我看了一下,是iso文件,訪問時提示不支持請求,原來iis默認(rèn)不支持一些格式的下載,下面是通用的解決思路。2009-10-10

