第一種解決方案: iis6系統(tǒng)默認的工作進程回收時間是29個小時有很多問題是在回收工作進程后出現(xiàn)很多問題如典型的500錯誤等經(jīng)過我做服務(wù)器的一段時間的觀察大家可以不用回收工作進程而是把應(yīng)用程序池的最大使用內(nèi)存調(diào)整到一個合適的值就可以了,因為如果設(shè)置了不回收工作進程,哪么這個應(yīng)用程序池所占用內(nèi)存的體積會很大并在不短增加中,我們設(shè)置了這個池最大使用內(nèi)存的大小就控制注了這個應(yīng)用程序池的程序變化在一個合理的值里
第二種解決方法: IIS6的應(yīng)用程序池會經(jīng)常出現(xiàn)一些問題 [查看系統(tǒng)日志會發(fā)現(xiàn)下邊錯誤] 為應(yīng)用程序池 'DefaultAppPool' 提供服務(wù)的進程關(guān)閉時間超過了限制。進程 ID 是 '3484'。 [隨之而來的還有] 事件 ID ( 54 )的描述(在資源( HTTP )中)無法找到。本地計算機可能沒有必要的注冊信息或消息 DLL 文件來從遠程計算機顯示消息。您可能可以使用 /AUXSOURCE= 標(biāo)識來檢索詞描述;查看幫助和支持以了解詳細信息。下列信息是事件的一部分: \Device\Http\AppPool. 網(wǎng)上查了很多資料,多說是應(yīng)用程序池?zé)o法在指定的時間內(nèi)回收造成的。適當(dāng)?shù)难娱L時間即可解決,最開始我設(shè)定為10分鐘內(nèi)必須回收。但是問題依舊。無奈只好關(guān)閉了回收,不回收的結(jié)果就是內(nèi)存得不到釋放,一次手動回收程序池并觀察進程動態(tài),讓我突然明白其中道理。 每個程序池都會有個獨立進程 w3wp.exe ,而在回收程序池時,系統(tǒng)會新建個w3wp.exe進程,用于處理新的web請求,從而慢慢釋放舊的進程。如果在指定時間內(nèi)舊的進程沒有釋放完,那么就會導(dǎo)致程序池出錯。 所以,把時間設(shè)長點就行了,我設(shè)成了3600秒,也就是一小時。設(shè)定之后程序池就再沒出現(xiàn)過問題,每天觀察服務(wù)器,內(nèi)存都能被很好的釋放。 下面是我的程序池設(shè)定,僅供參考。 右擊應(yīng)用程序池DefaultAppPool,選取屬性: 一、回收 1、回收工作進程(分鐘):(不選) 2、回收工作進程(請求數(shù)目):(不選) 3、在下列時間回收工作進程:我設(shè)定為凌晨3點,因為那個時候訪問量最少,請求最少,較容易釋放資源。 4、消耗太多內(nèi)存時回收工作進程:(不選) 二、性能 空閑超時20分鐘:(不選) 請求隊列限制:(不選) WEB園最大工作進程數(shù)為1(默認)。 三、運行狀況 啟用ping:選中 啟用快速失敗保護:不選。 啟動時間限制:900秒 關(guān)閉時間限制:3600秒。
第三種解決方法: 因為應(yīng)用程序池 DefaultAppPool 提供服務(wù)的進程關(guān)閉時間超過了限制 服務(wù)器經(jīng)常產(chǎn)生“應(yīng)用程序池 DefaultAppPool 提供服務(wù)的進程關(guān)閉時間超過了限制。進程 ID 是 2068?!钡腻e誤,導(dǎo)致iis處于假死狀態(tài),經(jīng)了解是IIS應(yīng)用程序池的設(shè)置問題。解決方法如下: Internet 信息服務(wù)(IIS)管理器->應(yīng)用程序池->DefaultAppPool->右擊屬性一、回收1、回收工作進程(分鐘):選中,值為17402、回收工作進程(請求數(shù)目):不選(原先設(shè)置為35000)3、在下列時間回收工作進程:不填4、消耗太多內(nèi)存時回收工作進程:全不選。(2、3、4項可能避免了在訪問量高的時候強制回收進程可能引發(fā)的服務(wù)器響應(yīng)問題,導(dǎo)致iis假死不響應(yīng)) 二、性能只選中空閑超時20分鐘。其他都不選。WEB園最大工作進程數(shù)為1(默認)。注意web園這里一定要保持默認,如果填寫其他超過1的數(shù)字就會導(dǎo)致一些網(wǎng)站程序的后臺程序打不開或者刷新不停。原來的請求隊列限制為4000,現(xiàn)在無限制。 三、運行狀況前兩項都起用,是原來的默認設(shè)置。啟動時間限制90秒,關(guān)閉時間限制180秒。啟動快速失敗保護的鉤去掉!為了避免真的遇到很多錯誤時沒有提示,可以不關(guān)閉,只是把快速保護的保護范圍加大些,例如失敗數(shù)50次 時間段5分鐘 則關(guān)閉對應(yīng)的程序?!瓣P(guān)閉時間限制180秒”是必須的,因為進程關(guān)閉的時間,原來為90秒限制,是默認值,如果進程關(guān)閉時間超過90秒,則認為超時,從而出現(xiàn):進程關(guān)閉時間超過了限制 日志,所以,適當(dāng)延長這個時間,可以避免這種錯誤。 服務(wù)器經(jīng)常產(chǎn)生“應(yīng)用程序池 ‘DefaultAppPool’ 提供服務(wù)的進程關(guān)閉時間超過了限制。進程 ID 是 ‘2068′?!钡腻e誤,導(dǎo)致iis處于假死狀態(tài),經(jīng)了解是IIS應(yīng)用程序池的設(shè)置問題。解決方法如下: Internet 信息服務(wù)(IIS)管理器->應(yīng)用程序池->DefaultAppPool->右擊屬性 原來的請求隊列限制為4000,現(xiàn)在無限制。 啟動快速失敗保護的鉤去掉! “關(guān)閉時間限制180秒”是必須的,因為進程關(guān)閉的時間,原來為90秒限制,是默認值,如果進程關(guān)閉時間超過90秒,則認為超時,從而出現(xiàn):進程關(guān)閉時間超過了限制 日志,所以,適當(dāng)延長這個時間,可以避免這種錯誤 第2種方法: 原因:獨立進程的 內(nèi)存堆戔消耗完了,IIS不能創(chuàng)建更多的進程工作空間來處理 解決方法: 第3種 問題已解決,發(fā)現(xiàn)是數(shù)據(jù)庫連接無法釋放,不知道是什么原因,同樣的代碼在本地就是好的,在服務(wù)器端就有問題,最后在連接串里加入以下語句解決問題. Pooling=true; MAX Pool Size=512;Min Pool Size=50;Connection Lifetime=30 第4種 新建應(yīng)用程序池,不同的網(wǎng)站引用不同程序池。 |
|