Windows2003 IIS應用程序池假死問題解決辦法

 

1  設置進程池回收時間.在進程池屬性裏.
2  如果你的程序是使用 asp + acc 數據庫.且acc數據庫大於30m.建議更換sql數據庫. acc數據庫大於這個值.2003系統下會造成iis6的頻繁假死.2000下會造成dllhost.exe佔用大量cpu及內存資源.都會嚴重影響web訪問速度.
3  asp程序存在死循環.
4  可使用 microsoft office 壓縮修復acc數據庫,須先備份.

1:以前沒有SP1打補丁的時候會出現這個IIS6。0假死問題,但現在微軟都在自動更新裏面出補丁了,一般你打好最新補丁後是不會出現此問題了。(所以現在的IIS假死與這個關係不是很大)

2:從IIS6.0開始CPU資源都在應用池裏面限制了,不象以前的IIS。5。所以假死的池的緣故就是池被拉死,你在網站打不開的時候可以看到你的某個應用池是禁用的,上面出現一個紅叉。你鼠標右鍵啓動網站又會自動恢復。 這個原因:大概是以下幾個因數造成的。

     (1):你限制了應用池的資源限制,限制得太小 比如:50這樣或更少更多一點,這個時候如果你這個池下面的網站佔用CPU太高,比如超過50% 那麼5分鐘後他就自動死了,手工默認建立的應用池默認是超過資源不操作。
       出現上面這個情況解決方法:1:不限制CPU資源,(這個是不可取的,不限制資源,有的程序有BUG佔用資源厲害了的,服務器都會被拉死,你可能都無法操作服務器。)2:在超過資源那裏選擇 關閉,這個關閉默認是失敗5次,90秒內恢復,一般默認就可。網站能自動恢復,這個關閉:不是永久關閉,意思是超過資源關閉,然後在某時間內自動恢復池。不操作就是不恢復,這個是很多人的誤區。上次我寫過相關的這個講解了。

     (2):內存限制 在IIS6。0應用池上面有虛擬內存和最大內存限制,如果你設置了這個。那麼網站訪問量大了 也會出現假死,所以不建議設置這裏。默認就可。

3:就是服務器自身內存太小,網站運行當然需要使用到內存了,當內存不夠的時候應用池也會死掉變成禁用。那麼只有等內存全部釋放出來才能恢復應用池了。出現這個情況:那麼你就要考慮加內存或者檢查到底是什麼程序佔用了內存了。比如MSSQL數據庫,這個可是吃內存得大戶啊,最好別和WEB服務器同時一個服務器上。很多人用1G內存做 2003系統,2003NET結構是很佔用內存的,所以做服務器選2003還得把內存加到2G或更高才好。 內存不夠上面 2點講到的,是沒辦法操作了,也無法自動恢復。

4:就是ACCESS數據庫太大或查詢太多,這個也會出現把IIS拉死,解決方法;修復ACCESS數據庫,或儘量少用ACCESS數據庫。

5:不同網站用不同應用池:根據你自己實際情況而定,站點大的最好獨立一個應用池,限制他的資源超過了自動回收,看上面 (1)講到的,這樣就不影響其他站點。 中型站點:多個網站共用一個應用池,比如5個站點用一個池,設置他資源時間等等。這樣他們就算超資源了也不影響其他應用池的網站。

6:設置回收時間:很多人以爲設置回收池越短越好,其實是錯誤的,每次回收當然是把內存回收回來了,但加重了一次服務器的負擔,當服務器比較繁忙的時候,有可能導致其他應用池死。所以建議設置共1000就行了。其他獨立池按照他網站流量而設置 可以設置600 也行,共用的不建議設置太短。

7:網站後臺過不了多久自動退出又要重新登陸:這個情況就是你設置回收時間太短了,按照 6點設置吧。 不要設置什麼20分、30分這樣的,這樣不好的。
 

---------------------------------------------------

縮短IIS應用池回收時間,減少IIS假死
IIS日誌:
應用程序:ISAPI 'C:/WINDOWS/system32/inetsrv/asp.dll' 報告它自身有問題,原因如下: 'ASP 不正常,因爲執行請求的 100% 被掛起,而且請求隊列已經使用了 0%。'。

關於server 2003+IIS6 出現 'ASP 不正常,因爲執行請求的 100% 被掛起

現像如下:

站點無法打開,或者打開很慢.HTML可以打開.重新啓動或者回收應用程序池可恢復.但過一段時間又會出現

日誌裏會有:

ISAPI 'C:/WINDOWS/system32/inetsrv/asp.dll' reported itself as unhealthy for the following reason: 'ASP unhealthy because 100% of executing requests are hung and 6% of the request queue is full.'.

或者:

ISAPI 'C:/WINDOWS/system32/inetsrv/asp.dll' 報告它自身有問題,原因如下: 'ASP 不正常,因爲執行請求的 100% 被掛起,而且請求隊列已經使用了 0%。'。

解決方法:

1.asp是否正確映射到'C:/WINDOWS/system32/inetsrv/asp.dll'

2.一般來講,是由於在同屬IIS的應用程序池出現了某個站ASP代碼錯誤所致,使得內存耗盡,檢查代碼本身的問題.可以隔離到單獨應用程序池調試

3、減少應用程序池回收時間。默認爲:1740。。可設爲120(每2小時)

IIS假死的原因:

打開IIS 你就會看到應用程序池,默認只有一個應用程序池,查看應用程序池的屬性,會發現他的回收時間,默認多達,1740分鐘,就是說,需要在1740分鐘後纔回收此應用程序池,如果在這個時間內,達到請求的最高限制,那麼就會出現ASP假死的情況,這個就是大型網站出現假死的情況,反而,小型網站確不會出現這樣的情況,因爲他請求少,流量少,還沒達到限制數量。當然要看你的服務器上網站數目而定。

以下是解決方法:

資料一

單個網站解決方法:

把應用程序池回收時間縮短到300-600分鐘,其間回收過程中,需要佔用一點CPU資源,沒辦法,爲了穩定性,再把回收時間設爲凌晨5點。

多網站解決方法:

我的服務器目前拉了70個網站左右,我新建六個應用程序池,把每個池回收時間縮小到300分鐘,然後再分配每個池10個網站左右(這個分配是要求你的網站訪問量所定)如果某個網站,訪問量大,就單獨給他一個程序池,但是這樣做的後果就是需要大內存,一個池現在佔用我120M內存左右,反正內存大,沒關係,

那麼多網站如何分配應用程序池,打開IIS--查看你要分配的網站屬性,,查看主目錄--在下面你就會看到應用程序池了,分配一個就行了。

資料二

大家在使用iis6時..如果裝了動網論壇.肯定有出現過iis6假死現像..就是asp網頁打開慢..但是iis卻是正常的..靜態網頁打開速度一樣..這時候..我一直是重啓的方法..查了官方的資料結果沒有...據官方資料說..win2003很快就要打這個補丁了..是iis6對access驅動支持不理像..也算是一個bug吧..由於我的服務器虛擬主機多..而且大多支持asp..如果一旦假死就無法運行..在多方面的資料查找下..找到了一個比較簡單的方法..具體我測試是通過了..iis6自帶數據應用程序池..現在就利用他來解決假死..

首先把bbs設一個單獨的目錄..然後點擊應用程序池..新建應用程序池.輸入應用程序池id..

然後把bbs的虛擬目錄下面的.就用程序池..選擇剛纔新建的應用程序池...

然後再回到剛纔設好的應用程序池...點擊..屬性...把回收工作進程數(分鐘)及回收工作進程數還有在下列時間回收時間進程勾上..然後在下列時間回收程序池裏左邊添加..選擇一個時間..一般來說..網站到凌晨3點的時候.基本人都很少了..這時回收一下bbs的進程數..就可以解決了iis假死的現像..

當然還可以配置其他信息..比如說iis6的用戶名.. 我們可以打開計處機管理..然後打開計算機用戶管理..添加一個用戶..設置好後..在應用程序池裏面..標識..把添加的用戶放上去..用用戶來測試回收的進程..當然還有..其他配置..其實很簡單..只要你好好看一下..就能明白意思...

對於我來說..這種方法可能不太方便..所以我用一個工具來回收應用程序池..這樣方便而且快捷..個人用戶當然不需要這種工具..我是公司工作..服務器壓力挺大..所以都用工具來解決一些問題.所括.iis的備分.及虛擬主機ip的統一修改及端口訪問的ip記錄..用批處理是一個很簡單又方便的方法.所以.把一臺服務器做的安全..並不是哪麼容易的事..特別是iis..經常去官方網站搜索資料是一個好習慣..還有就是經常性的訪問日誌..及註冊表的用戶還有加載運行的程序.及服務也是一個好方法.

發佈了23 篇原創文章 · 獲贊 3 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章