.net網(wǎng)站IIS應(yīng)用程序池綜合知識(shí)
一、防DDOS攻擊11條:
1.確保所有服務(wù)器采用最新系統(tǒng),并打上安全補(bǔ)丁。計(jì)算機(jī)緊急響應(yīng)協(xié)調(diào)中心發(fā)現(xiàn),幾乎每個(gè)受到DDoS攻擊的系統(tǒng)都沒(méi)有及時(shí)打上補(bǔ)丁。
2.確保管理員對(duì)所有主機(jī)進(jìn)行檢查,而不僅針對(duì)關(guān)鍵主機(jī)。這是為了確保管理員知道每個(gè)主機(jī)系統(tǒng)在 運(yùn)行什么?誰(shuí)在使用主機(jī)?哪些人可以訪問(wèn)主機(jī)?不然,即使黑客侵犯了系統(tǒng),也很難查明。
3.確保從服務(wù)器相應(yīng)的目錄或文件數(shù)據(jù)庫(kù)中刪除未使用的服務(wù)如FTP或NFS。Wu-Ftpd等守護(hù)程序存在一些已知的漏洞,黑客通過(guò)根攻擊就能獲得訪問(wèn)特權(quán)系統(tǒng)的權(quán)限,并能訪問(wèn)其他系統(tǒng)——甚至是受防火墻保護(hù)的系統(tǒng)。
4.確保運(yùn)行在Unix上的所有服務(wù)都有TCP封裝程序,限制對(duì)主機(jī)的訪問(wèn)權(quán)限。
5.禁止內(nèi)部網(wǎng)通過(guò)Modem連接至PSTN系統(tǒng)。否則,黑客能通過(guò)電話線發(fā)現(xiàn)未受保護(hù)的主機(jī),即刻就能訪問(wèn)極為機(jī)密的數(shù)據(jù)。
6.禁止使用網(wǎng)絡(luò)訪問(wèn)程序如Telnet、Ftp、Rsh、Rlogin和Rcp,以基于PKI的訪問(wèn)程序如SSH取代。SSH不會(huì)在網(wǎng)上以明文格式傳送口令,而Telnet和Rlogin則正好相反,黑客能搜尋到這些口令,從而立即訪問(wèn)網(wǎng)絡(luò)上的重要服務(wù)器。此外,在Unix上應(yīng)該將.rhost 和 hosts.equiv文件刪除,因?yàn)椴挥貌驴诹睿@些文件就會(huì)提供登錄訪問(wèn)!
7.限制在防火墻外與網(wǎng)絡(luò)文件共享。這會(huì)使黑客有機(jī)會(huì)截獲系統(tǒng)文件,并以特洛伊木馬替換它,文件傳輸功能無(wú)異將陷入癱瘓。
8.確保手頭有一張最新的網(wǎng)絡(luò)拓?fù)鋱D。這張圖應(yīng)該詳細(xì)標(biāo)明TCP/IP地址、主機(jī)、路由器及其他網(wǎng)絡(luò)設(shè)備,還應(yīng)該包括網(wǎng)絡(luò)邊界、非軍事區(qū)(DMZ)及網(wǎng)絡(luò)的內(nèi)部保密部分。
9.在防火墻上運(yùn)行端口映射程序或端口掃描程序。大多數(shù)事件是由于防火墻配置不當(dāng)造成的,使DoS/DDoS攻擊成功率很高,所以定要認(rèn)真檢查特權(quán)端口和非特權(quán)端口。
10.檢查所有網(wǎng)絡(luò)設(shè)備和主機(jī)/服務(wù)器系統(tǒng)的日志。只要日志出現(xiàn)漏洞或時(shí)間出現(xiàn)變更,幾乎可以肯定:相關(guān)的主機(jī)安全受到了危脅。
11.利用DDoS設(shè)備提供商的設(shè)備
估計(jì)你是網(wǎng)管,還是選用硬件防火墻象思科的,或?qū)I(yè)軟
件防火墻如:傲盾,天盾等來(lái)減少DDOS。
二、w3wp.exe內(nèi)存占用過(guò)高解決方法:
在IIS6下,經(jīng)常出現(xiàn)w3wp的內(nèi)存占用不能及時(shí)釋放,從而導(dǎo)致服務(wù)器響應(yīng)速度很慢。
由于內(nèi)存釋放不及時(shí)嚴(yán)重影響到服務(wù)器的正常運(yùn)營(yíng),建議采用以下配置,但請(qǐng)考慮自身服務(wù)器的使用情況。
可以做以下配置:
1、在IIS中對(duì)每個(gè)網(wǎng)站進(jìn)行單獨(dú)的應(yīng)用程序池配置。即互相之間不影響。(進(jìn)程池越多越占用內(nèi)存,由于訪問(wèn)網(wǎng)站之后往往不會(huì)立即釋放內(nèi)存資源。)
2、設(shè)置應(yīng)用程序池的回收時(shí)間,默認(rèn)為1720小時(shí),可以根據(jù)情況修改。同時(shí),設(shè)置同時(shí)運(yùn)行的w3wp進(jìn)程數(shù)目為1。再設(shè)置當(dāng)內(nèi)存或者cpu占用超過(guò)多少,就自動(dòng)回收內(nèi)存 。
3、設(shè)置固定時(shí)間加收進(jìn)程,比如在凌晨1:00至9:00之前訪問(wèn)人數(shù)都比較少,影響很少小,可以設(shè)定每天在這個(gè)時(shí)間段內(nèi)進(jìn)行內(nèi)存回收,以減少服務(wù)器因?yàn)閮?nèi)存不足帶來(lái)的影響。設(shè)定固定的時(shí)間在IIS6中沒(méi)有限制次數(shù),可以根據(jù)實(shí)際情況來(lái)設(shè)定時(shí)間比如:晚上12:00,8:00,12:30,6:30等時(shí)間段時(shí)間有效的進(jìn)程池資源回收。
一般來(lái)說(shuō),這樣就可以解決了。但仍然會(huì)出現(xiàn)個(gè)別網(wǎng)站因?yàn)槌绦騿?wèn)題,不能正確釋放。
那么,怎么樣才能找到是哪一個(gè)網(wǎ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)用程序池
3、到iis中察看該應(yīng)用程序池對(duì)應(yīng)的網(wǎng)站,就ok了。
三、Windows Server 2003中的w3wp.exe進(jìn)程大量占用cpu資源的各種問(wèn)題解決方法這幾天服務(wù)器總是運(yùn)行緩慢,遠(yuǎn)程登錄后發(fā)現(xiàn)一個(gè)w3wp.exe的進(jìn)程占用了100%cpu
在Windows Server 2003中對(duì)于每一個(gè)Web應(yīng)用,IIS 6.0都用一個(gè)獨(dú)立的w3wp.exe的實(shí)例來(lái)運(yùn)行它。w3wp.exe也稱(chēng)為工作進(jìn)程(每一個(gè)主機(jī)頭都會(huì)有一個(gè))
直接在任務(wù)管理器中結(jié)束進(jìn)程是不起作用的,結(jié)束后不久它會(huì)執(zhí)行啟動(dòng),要想結(jié)束它可以在IIS中找到相應(yīng)的應(yīng)用程序池停止相應(yīng)的應(yīng)用程序池工作。這些都不是解決辦法,它的根本問(wèn)題是你的那個(gè)網(wǎng)站程序有問(wèn)題,在找到問(wèn)題以前可以先打開(kāi)IIS找到應(yīng)用程序池先用右鍵屬性中設(shè)置“性能”把其中的CPU設(shè)成大于60%關(guān)閉應(yīng)用程序池,把關(guān)閉時(shí)間和開(kāi)啟時(shí)間設(shè)短一些比如10秒,這樣當(dāng)您的網(wǎng)站程序大量占用系統(tǒng)資源時(shí)IIS自動(dòng)快速回收進(jìn)程并且快速啟動(dòng)進(jìn)程,您的網(wǎng)站暫時(shí)還可以將就著工作。要解決根本問(wèn)題還要從程序查起,您可以在IIS中的應(yīng)用程序池中右鍵創(chuàng)建多個(gè)應(yīng)用程序池,然后在每個(gè)主機(jī)頭中的文件家選項(xiàng)的底部將應(yīng)用程序池對(duì)應(yīng)道剛才建好的應(yīng)用程序池,然后一個(gè)一個(gè)關(guān)閉在任務(wù)管理器中看看是哪個(gè)程序占用的資源較大。下面是一些網(wǎng)友的相關(guān)貼子也許對(duì)大家有幫助朋友的WEB服務(wù)器一直運(yùn)行正常,但這幾天CPU占用率一直將近100%,遂去看個(gè)究竟。
服務(wù)器采用Windows 2003, 網(wǎng)站使用ASP+Access數(shù)據(jù)庫(kù), 查看進(jìn)程列表發(fā)現(xiàn)
w3wp.exe 占用了70%以上的CPU,
查看WEB日志,站點(diǎn)訪問(wèn)量不大,查看TCP連接也不多。用net stop w3svc停掉WEB服
務(wù),CPU占用立即正常,net start w3svc啟動(dòng)WEB后不久現(xiàn)象又出來(lái)了。停止所有虛
擬站點(diǎn),新建一個(gè)虛擬站點(diǎn)發(fā)現(xiàn)并沒(méi)有問(wèn)題,懷疑是站點(diǎn)本身的代碼問(wèn)題。
檢查首頁(yè)代碼,大致是如下結(jié)構(gòu):
粗看一下并沒(méi)有問(wèn)題,但就是這段代碼造成了w3wp.exe占用大量CPU,難道是死循環(huán)?似
乎沒(méi)有理由。在循環(huán)體內(nèi)加入計(jì)數(shù),發(fā)現(xiàn)確實(shí)是死循環(huán),說(shuō)明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, 說(shuō)明無(wú)法判斷RS.EOF的值,
為何如此百思不得其解。檢查數(shù)據(jù)庫(kù),發(fā)現(xiàn)庫(kù)中并沒(méi)有mytable表, 如果該表不存在,
RS.Open "Select * FROM mytable", conn 就會(huì)出錯(cuò),為何沒(méi)有出錯(cuò),很
有可能捕獲的異常被忽略了。
檢查包含文件conn.asp, 發(fā)現(xiàn)了異常處理代碼:
On Error Resume Next
原來(lái)問(wèn)題在此。
On Error Resume Next忽略了查詢表時(shí)的失敗以及后續(xù)的錯(cuò)誤,造成進(jìn)入死循環(huán)
。
那為何網(wǎng)站本來(lái)運(yùn)行正常,現(xiàn)在卻找不到mytable表了呢?仔細(xì)檢查網(wǎng)站才發(fā)現(xiàn)“有‘客
’自遠(yuǎn)方來(lái)”,上傳了后門(mén)工具、刪除了多張數(shù)據(jù)表,害我忙活了一天。
更多的內(nèi)容大家還可以到:
http://www.microsoft.com/china/technet/security/guidance/secmod93.mspx
查找更詳細(xì)的安全設(shè)置
windows2003 iis6.0假死問(wèn)題解決
這幾天服務(wù)器總是運(yùn)行緩慢,遠(yuǎn)程登錄后發(fā)現(xiàn)一個(gè)w3wp.exe的進(jìn)程占用了100% cpu。
問(wèn)題的原因最終找到兩個(gè):
1.采用的jet 數(shù)據(jù)庫(kù)連接方式存在問(wèn)題:http://support.microsoft.com/?id=838306
補(bǔ)丁下載:
chs:WindowsServer2003-KB838306-x86-chs.exe
enu:WindowsServer2003-KB838306-x86-enu.exe
2.將access數(shù)據(jù)庫(kù)擴(kuò)展名改為asp
下面是我的差錯(cuò)過(guò)程和解決方案:
搜索一下發(fā)現(xiàn)類(lèi)似問(wèn)題還真不少,那個(gè)w3wp的進(jìn)程是iis6.0的應(yīng)用程序池,網(wǎng)上的說(shuō)法
有兩種,一是因?yàn)閍sp或者asp.NET代碼中含有死循環(huán)引起的。但是服務(wù)器上這么多網(wǎng)站
,誰(shuí)知道那個(gè)網(wǎng)站出了問(wèn)題。二是由于上面的jet連接數(shù)據(jù)庫(kù)方式的bug引起的,下載
838306的補(bǔ)丁,或者升級(jí)到sp1可以解決這個(gè)問(wèn)題,但是打了這個(gè)補(bǔ)丁后,有些網(wǎng)站的問(wèn)
題依然存在。
又去搜索,有人說(shuō)將每個(gè)網(wǎng)站建立獨(dú)立的應(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èn)題依然存在,這樣一個(gè)網(wǎng)站出現(xiàn)問(wèn)題,不致影響其他網(wǎng)站,但是這
個(gè)網(wǎng)站仍然占用大量資源,導(dǎo)致其它網(wǎng)站響應(yīng)緩慢。不過(guò)在任務(wù)管理器中出現(xiàn)了每個(gè)應(yīng)
用程序池的進(jìn)程,因此可以找到具體出問(wèn)題的進(jìn)程了。
下面是尋找出錯(cuò)網(wǎng)站的過(guò)程:要找到這個(gè)網(wǎng)站,必須把有問(wèn)題的進(jìn)程跟該網(wǎng)站的應(yīng)用程
序池聯(lián)系起來(lái)。首先設(shè)置任務(wù)管理器的查看方式,加入PID的顯示:
然后再命令行運(yùn)行iisapp -a,可以看到PID跟應(yīng)用程序池的對(duì)應(yīng)關(guān)系:
再去iis中看該應(yīng)用程序池對(duì)應(yīng)的網(wǎng)站,有問(wèn)題的網(wǎng)站就找到了,剩下的就是這個(gè)網(wǎng)站代
碼中的問(wèn)題了。
在某位網(wǎng)站管理員的糾纏不休下,我終于無(wú)法忍受,幫他找錯(cuò)誤- - 無(wú)數(shù)次配置iis
,網(wǎng)站程序也換了,該升級(jí)的也升級(jí)了,問(wèn)題還是存在,黔驢技窮,把網(wǎng)站下載到本地
看看到底怎么回事。當(dāng)我試圖打開(kāi)他的數(shù)據(jù)庫(kù)的時(shí)候,問(wèn)題出現(xiàn)了:
他的數(shù)據(jù)庫(kù)是.asp的擴(kuò)展名,要先修改為.mdb才能打開(kāi),但是當(dāng)我點(diǎn)擊要改名字的時(shí)候
,我的電腦沒(méi)有響應(yīng)了~!看來(lái)問(wèn)題在這個(gè)數(shù)據(jù)庫(kù)了。
用命令行rename之后,打開(kāi)數(shù)據(jù)庫(kù),修復(fù),似乎沒(méi)有任何問(wèn)題,但是再改為.asp時(shí),又
出現(xiàn)了剛才的問(wèn)題。哈~原來(lái)是.asp的擴(kuò)展名在作怪。
但是我試著將其他的數(shù)據(jù)庫(kù)改為.asp,沒(méi)有問(wèn)題。根本原因不得而知,望知情者告知。
最后,在iis中隨便添加了一個(gè)isapi對(duì)應(yīng)到mdb,造成mdb無(wú)法執(zhí)行,防止下載,將所有
的.asp的數(shù)據(jù)庫(kù)改回.mdb,問(wèn)題解決
(轉(zhuǎn))Windows Server 2003中的w3wp.exe進(jìn)程大量占用cpu資源的各種問(wèn)題解決方法 1:使用 MicrosoftJet 數(shù)據(jù)庫(kù)引擎 Web 應(yīng)用程序可能停止響應(yīng)負(fù)載,造成假死:
原因:發(fā)生此問(wèn)題是因?yàn)?Jet 數(shù)據(jù)庫(kù)引擎中存在缺陷。 Microsoft Windows Server 2003 上只會(huì)出現(xiàn)此問(wèn)題。 在 Windows Server 2003, COM+ 更改頻率 CoFreeUnusedLibraries 函數(shù)被調(diào)用。 此更改導(dǎo)致 Jet 驅(qū)動(dòng)程序以初始化頻繁。 此行為可能導(dǎo)致死鎖條件。
Web 服務(wù)器負(fù)載時(shí)最常出現(xiàn)此問(wèn)題。
補(bǔ)丁下載:
chs:WindowsServer2003-KB838306-x86-chs.exe
enu:WindowsServer2003-KB838306-x86-enu.exe
在IIS6下,經(jīng)常出現(xiàn)w3wp.exe的內(nèi)存及CPU占用不能及時(shí)釋放,從而導(dǎo)致服務(wù)器響應(yīng)速度很慢。
解決內(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)存。
解決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è)一個(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:\windows\system32目錄下的一個(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)題。
QUOTE:
環(huán)境:win2003server+IIs+ASP+MSSQL
現(xiàn)象:每隔一段時(shí)間(不定,有時(shí)幾分鐘,有時(shí)半小時(shí))出現(xiàn)一次網(wǎng)站打開(kāi)非常緩慢,甚至有時(shí)會(huì)出現(xiàn)超時(shí)打不開(kāi)站點(diǎn),此時(shí)查看服務(wù)器端的進(jìn)程,CPU占用率達(dá)到100%,其中w3wp占用70~80%,SQL占用20~30%。所有服務(wù)器端的操作也變得緩慢。
初期解決方法:每次現(xiàn)象出現(xiàn)時(shí),立即登錄服務(wù)器直接結(jié)束w3wp進(jìn)程或重啟IIS服務(wù),平均每天約十次操作,由于服務(wù)器存放于遠(yuǎn)程機(jī)房,所有操作都是遠(yuǎn)程控制進(jìn)行,有時(shí)會(huì)因此出現(xiàn)遠(yuǎn)程無(wú)法連接登錄的情況,只能通過(guò)電話通知機(jī)房管理人員重啟服務(wù)器解決,此過(guò)程導(dǎo)致用戶抱怨不斷。
經(jīng)過(guò)網(wǎng)上查閱資料,發(fā)現(xiàn)此類(lèi)現(xiàn)象多數(shù)由于網(wǎng)頁(yè)代碼不合理所致,以下情況會(huì)導(dǎo)致此類(lèi)現(xiàn)象發(fā)生:
1、代碼中多處使用application、seesion等服務(wù)器緩存,導(dǎo)致服務(wù)器資料過(guò)度占用;
2、代碼有不合理語(yǔ)法,死循環(huán)等;
3、數(shù)據(jù)庫(kù)損壞,尤其是ACCESS數(shù)據(jù)庫(kù);
4、裝過(guò)多第三方軟件或插件,與IIS或網(wǎng)頁(yè)功能代碼沖突。
第一階段排查:根據(jù)查閱到的參考資料逐項(xiàng)分析
1、服務(wù)器上所有站點(diǎn)代碼均為公司設(shè)計(jì)人員自行編寫(xiě),可證實(shí)并無(wú)過(guò)多調(diào)用服務(wù)器緩存語(yǔ)法(排除)
2、代碼是否存在不合理語(yǔ)法(不確定)
3、根據(jù)情況來(lái)看,IIS進(jìn)程占用率升高時(shí),SQL占用率同時(shí)升高,應(yīng)為SQL數(shù)據(jù)庫(kù)的站點(diǎn),根據(jù)現(xiàn)象判斷,庫(kù)或表應(yīng)該正常,估計(jì)是數(shù)據(jù)方面可能有誤;(不確定)
4、服務(wù)器端除了基本的系統(tǒng)服務(wù),防殺毒及網(wǎng)站運(yùn)作必備服務(wù)之外,并無(wú)多余第三方軟件,機(jī)率不大(排除)。
經(jīng)過(guò)以上分析判斷,將不確定項(xiàng)連起來(lái)得出的結(jié)論是:某個(gè)采用了SQL數(shù)據(jù)庫(kù)的網(wǎng)站網(wǎng)頁(yè)代碼存在不合理語(yǔ)法,導(dǎo)致IIS和SQL進(jìn)程CPU占用率過(guò)高。
第二階段排查:
確定范圍,接著繼續(xù)把范圍縮小。
由于服務(wù)器上采用SQL數(shù)據(jù)庫(kù)的站點(diǎn)并不多,便于建立獨(dú)立進(jìn)程ID來(lái)觀察,將所有采用SQL數(shù)據(jù)庫(kù)的站點(diǎn)在IIS管理器中分別建立獨(dú)立的應(yīng)用程序池,然后通過(guò)CMD界面輸入:iisapp -a 命今查看并記錄下各IIS池的進(jìn)程ID號(hào),通過(guò)多次現(xiàn)象重現(xiàn)時(shí)的觀察,有個(gè)IIS進(jìn)程ID是導(dǎo)致此次問(wèn)題的罪魁禍?zhǔn)住?/p>
2003服務(wù)器用.net程序,w3wp老占cpu資源!怎么辦?
w3wp.exe狂占內(nèi)存的問(wèn)題解決方案!
問(wèn):
好的asp.Net程序,放在一臺(tái)服務(wù)器上,客戶端連接使用一段時(shí)間后,在服務(wù)器上打開(kāi)任務(wù)管理器一看,發(fā)現(xiàn)有很多w3wp.exe,占用內(nèi)存很大,達(dá)到1g,請(qǐng)問(wèn)為什么會(huì)這樣?有什么辦法可以避免這種情況呢?
答:這主要是你的ASP.NET 開(kāi)發(fā)的程序有 內(nèi)存泄漏;對(duì)于 非托管資源,一定要注意 釋放。
-==================================
問(wèn):我的具體情況是這樣的:
服務(wù)器配置 至強(qiáng)2.8G 內(nèi)存512M SCSI硬盤(pán) 2塊 (軟鏡像)
系統(tǒng) windows 2003
現(xiàn)在掛了一個(gè)asp.net開(kāi)發(fā)的網(wǎng)站 訪問(wèn)量不大 但是出現(xiàn)一個(gè) 問(wèn)題就是
每當(dāng)服務(wù)器運(yùn)行2-3天后 訪問(wèn)網(wǎng)站就特別慢 重啟動(dòng)服務(wù)器后就 正常了
查看進(jìn)程使用內(nèi)存的情況 發(fā)現(xiàn)w3wp.exe 和sqlservr.exe 進(jìn)程 占用內(nèi)存
相當(dāng)大 達(dá)到了170多M( 每個(gè)) 物理可用內(nèi)存幾乎用光
(服務(wù)器重啟動(dòng)時(shí) 占用的內(nèi)存很小才40多M 每個(gè))
以前網(wǎng)站掛在一個(gè)虛擬機(jī)上 數(shù)據(jù)庫(kù)是分開(kāi)掛的 從沒(méi)出現(xiàn)這種情況
后來(lái) 原版移植到新服務(wù)器上就 出現(xiàn)這樣的問(wèn)題~~
還個(gè)一問(wèn)題就是 我在SQL企業(yè)管理器中查看SQL進(jìn)程 發(fā)現(xiàn)有很多是 。net 引起的進(jìn)程是sleeping 但是卻占用了內(nèi)存~ 無(wú)法釋放
搞了很久了 一直都沒(méi)解決
求救~~請(qǐng)高手 指教~~ 萬(wàn)分感謝~~~~~
答:IIS服務(wù)管理器----》應(yīng)用程序池----》添加你的應(yīng)用,并設(shè)置最大內(nèi)存,當(dāng)程序達(dá)到最大內(nèi)存后其會(huì)自動(dòng)重啟。
我的問(wèn)題跟你一樣,不過(guò)我的內(nèi)存是2G的,訪問(wèn)量比較高,一般是差不多運(yùn)行24小時(shí)后就得重啟,內(nèi)存沒(méi)耗完,W3WP進(jìn)程占到一百八九十兆,SQL占了二百多兆時(shí),就得重啟,不然整個(gè)站點(diǎn)就當(dāng)在那邊....55555555,搞了快半個(gè)月了還是不行,痛苦啊
w3wp.exe就是你的ASP.NET應(yīng)用宿主,如果你使用了大量的Session、Cache等資源,并且Session超市時(shí)間很長(zhǎng),那么內(nèi)存占用量就比較大。應(yīng)用池是為增加性能而設(shè)的一個(gè)特性,但是也消耗很大的內(nèi)存。另外關(guān)掉Windows Server 2003里的大多數(shù)Service(那個(gè)不用都可以關(guān)掉),也可以節(jié)省一部分內(nèi)存
1.懷疑在程序中應(yīng)用的CACHE,
2.CACHE中有大量的數(shù)據(jù)
3.頻繁刷新CACHE
4.沒(méi)有設(shè)計(jì)好CACHE的方式
你的問(wèn)題我以前也遇見(jiàn)過(guò),我以前是用的Session,后我全部改成cook之后就好多了,應(yīng)該是你的Session或是你的CACHE有問(wèn)題(CACHE不太懂,但多多少應(yīng)該是有的)
跟蹤下SQL的調(diào)用記錄,在每次往CACHE或SESSION寫(xiě)入大量數(shù)據(jù)時(shí)記錄一下時(shí)間,看是否太過(guò)頻繁
1.在win2003里asp.net的進(jìn)程就是w3wp.exe
2.512M內(nèi)存?zhèn)€人用是夠用了,但是放在服務(wù)器上就有點(diǎn)不夠用了,尤其是win2003 + asp.net +sql server 。尤其是sql server 他是很吃內(nèi)存的,如果不控制的話,他會(huì)占光所有的物理內(nèi)存(只剩下幾十M 倒 100M 吧)。win2003 本身就要占用150M左右。也就剩不下什么了。
3.優(yōu)化asp.net程序,就向樓上的說(shuō)的那樣,少用或不用session cache application之類(lèi)的東西,再有就是是不是有翻頁(yè)的地方,翻頁(yè)處理不好也是會(huì)占很多內(nèi)存的。
4.限制sql的內(nèi)存。企業(yè)管理器——SQL的屬性(一般是local)——“內(nèi)存”標(biāo)簽
在這里看內(nèi)存的設(shè)置,把最大值改成100M吧。
第四條是最快的方法,可以試一試。
我的一個(gè)自開(kāi)發(fā)OA系統(tǒng)也存在這樣的問(wèn)題。
總結(jié)上面,大概原因是因?yàn)?session 和 cache 的不合理使用造成的。
我的應(yīng)用程序中,確實(shí)用了很多的Session 和 Cache,
在 MSDN 中找到 了 “動(dòng)態(tài)內(nèi)存分配”這一篇,今天就試看看,是否有效。
希望有經(jīng)驗(yàn)的朋友多給些信息,大家也好總結(jié)下出現(xiàn)類(lèi)似錯(cuò)誤的原因,謝謝!!
不知道你是什么網(wǎng)站。按理說(shuō)是不會(huì)占用這么大的。如上你用了cache存放了超額的內(nèi)容。當(dāng)然。象session這種是不太可能占用這么大的了,或用了application 類(lèi)似的一些有超長(zhǎng)時(shí)間或永久保持性的對(duì)象來(lái)保存大量數(shù)據(jù)。如利用單例保存數(shù)據(jù)這些都有可能造成使用大量的內(nèi)存。
建義2003系統(tǒng)安裝至少1G內(nèi)存。
w3wp.exe是2003下的一個(gè)iis進(jìn)程,至于樓主說(shuō)的sql占用內(nèi)存,那有可能是因?yàn)槟愕膕ql沒(méi)有設(shè)置占用內(nèi)存上限
-==================================
w3wp.exe進(jìn)程狂占內(nèi)存和CPU問(wèn)題 誰(shuí)能幫我??
我的電腦:P4,512M內(nèi)存。。當(dāng)我用了aspx系統(tǒng)建站兩個(gè)星期后,就出現(xiàn)了速度極慢的情況,在進(jìn)程里看到w3wp.exe狂占內(nèi)存和CPU.
剛開(kāi)始幾十人注冊(cè)時(shí)速度都不會(huì)有影響,但注冊(cè)會(huì)員有100名以上后,再有多人同時(shí)注冊(cè)時(shí)就出現(xiàn)了速度極慢的情況,簡(jiǎn)直導(dǎo)致癱瘓。
IIS中設(shè)置不正確。在.NET中,不要在IIS里限制內(nèi)存的使用,不然當(dāng)內(nèi)存不足的時(shí)候,IIS會(huì)不斷的重新起動(dòng)。每次起動(dòng)有30秒的時(shí)候用來(lái)重新加載.NET包,所以,網(wǎng)站在加載.NET 包時(shí)狂慢。這也是我當(dāng)時(shí)用.NET系統(tǒng)時(shí)碰到過(guò)的問(wèn)題。
應(yīng)用程序池--屬性--回收--內(nèi)存回收:消耗太多內(nèi)存時(shí)回收工作進(jìn)程:1、最大虛擬內(nèi)存。2、最大使用的內(nèi)存。兩個(gè)選項(xiàng)都沒(méi)選擇
這里不要打勾。另一處是性能里的請(qǐng)求隊(duì)列,不要打勾。
自已調(diào)調(diào)看就有經(jīng)驗(yàn)了,我也是自已摸索出來(lái)的方法。
A:關(guān)于W3WP.EXE的知識(shí).
Q : W3WP.EXE,應(yīng)用程序,應(yīng)用程序池之間的關(guān)系
A : 一個(gè)應(yīng)用程序池可以包含多個(gè)應(yīng)用程序,一個(gè)應(yīng)用程序池創(chuàng)建一個(gè)W3WP.EXE進(jìn)程.那么我們就不能簡(jiǎn)單的說(shuō)一個(gè)進(jìn)程池對(duì)應(yīng)一個(gè)W3WP.EXE進(jìn)程了!其實(shí)是多個(gè)應(yīng)用進(jìn)程池對(duì)應(yīng)一個(gè)W3WP.EXE進(jìn)程的.
Q : 如何啟動(dòng)和關(guān)閉W3WP.EXE這個(gè)進(jìn)程
A : W3WP.EXE這個(gè)進(jìn)程將在你訪問(wèn)www應(yīng)用程序的時(shí)候啟動(dòng).有人就會(huì)這么問(wèn)了:"我啟動(dòng)了一個(gè)Web應(yīng)用程序,發(fā)現(xiàn)系統(tǒng)自動(dòng)創(chuàng)建了一個(gè)W3wp.exe進(jìn)程。但我關(guān)閉這個(gè)Web應(yīng)用程序后,發(fā)現(xiàn)這個(gè)剛創(chuàng)建的W3Wp.exe進(jìn)程還在,請(qǐng)問(wèn)如何關(guān)閉該進(jìn)程。"這個(gè)進(jìn)程不會(huì)在你關(guān)閉了這個(gè)程序以后,就馬上關(guān)閉的.那是因?yàn)镠ttp是無(wú)連接的訪問(wèn),當(dāng)你關(guān)閉了web網(wǎng)頁(yè),不會(huì)返回相應(yīng)的關(guān)閉信息,所以W3WP.EXE這個(gè)進(jìn)程不會(huì)因?yàn)槟汴P(guān)閉了web應(yīng)用程序爾關(guān)閉.
Q : 那么如何關(guān)閉這個(gè)進(jìn)程呢?
A : 在應(yīng)用程序池的配置中,"空閑超時(shí)"中設(shè)定合適的時(shí)間,系統(tǒng)默認(rèn)的是20分鐘.設(shè)定好指定的時(shí)間,那么在這個(gè)時(shí)間范圍內(nèi)沒(méi)有在訪問(wèn)應(yīng)用程序,那么系統(tǒng)會(huì)自動(dòng)的關(guān)閉W3WP.EXE這個(gè)進(jìn)程的.而不需要我們?nèi)藶榈母深A(yù)的.也可以在Windows任務(wù)管理器里面,結(jié)束這個(gè)進(jìn)程
Q : 如何讓W(xué)3WP.EXE進(jìn)程長(zhǎng)時(shí)間的運(yùn)行.
A : W3WP.EXE這個(gè)進(jìn)程的默認(rèn)生命是1740分鐘,但依然是在這種默認(rèn)的自然規(guī)律下,W3WP.EXE將在自己失業(yè)20分鐘后,被系統(tǒng)直接槍殺.這樣就可以看出,要想讓W(xué)3WP.EXE長(zhǎng)時(shí)間的生存,那我們可以通過(guò)”空閑超時(shí)”不作處理來(lái)達(dá)到我們的目的.
Q : 在IIS6下,經(jīng)常出現(xiàn)w3wp.exe的內(nèi)存及CPU占用不能及時(shí)釋放,從而導(dǎo)致服務(wù)器響應(yīng)速度很慢。
A: 解決內(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)存。
解決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è)一個(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:\windows\system32目錄下的一個(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)題。
A2 : by 小步舞曲
查看占用cpu的w3wp進(jìn)程里面里面有那個(gè)用戶呼叫的token
Q : 另一種加載了某程序后發(fā)生w3wp.exe問(wèn)題
A: 修改C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG\machine.config,再配置節(jié)點(diǎn)<processModel>中有一個(gè)屬性"memoryLimit",這個(gè)屬性的值是一個(gè)百分比,默認(rèn)為"60"(注意,是60%不是60M),即制定了ASP.NET進(jìn)程能夠使用所有物理內(nèi)存的60%,當(dāng)ASP.NET使用的內(nèi)存量草果這個(gè)限額時(shí),IIS會(huì)開(kāi)始自動(dòng)回收進(jìn)程,即創(chuàng)建一個(gè)新的進(jìn)程去負(fù)責(zé)應(yīng)付HTTP請(qǐng)求,而將舊進(jìn)程所占用的內(nèi)存回收.