發表時間:2008年12月29日 14:14

本文地址:http://qzone.qq.com/blog/8522106-1230531249

 

打開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..經常去官方網站搜索資料是一個好習慣..還有就是經常性的訪問日志..及注冊表的用戶還有加載運行的程序.及服務也是一個好方法..所以.要學會如何遇到問題如何處理問題!!!!============================================================================
為應用程序池 ‘DefaultAppPool’ 提供服務的進程關閉時間超過了限制
服務器經常產生“應用程序池 ‘DefaultAppPool’ 提供服務的進程關閉時間超過了限制。進程 ID 是 ‘2068’。”的錯誤,導致iis處于假死狀態,經了解是IIS應用程序池的設置問題。解決方法如下:

Internet 信息服務(IIS)管理器->應用程序池->DefaultAppPool->右擊屬性
一、回收
1、回收工作進程(分鐘):選中,值為1740
2、回收工作進程(請求數目):不選(原先設置為35000)
3、在下列時間回收工作進程:不填
4、消耗太多內存時回收工作進程:全不選。(2、3、4項可能避免了在訪問量高的時候強制回收進程可能引發的服務器響應問題,導致iis假死不響應)
二、性能
只選中空閑超時20分鐘。其他都不選。WEB園最大工作進程數為1(默認)。注意web園這里一定要保持默認,如果填寫其他超過1的數字就會導致一些網站程序的后台程序打不開或者刷新不停。

原來的請求隊列限制為4000,現在無限制。
三、運行狀況
前兩項都起用,是原來的默認設置。啟動時間限制90秒,關閉時間限制180秒。

啟動快速失敗保護的鉤去掉!
為了避免真的遇到很多錯誤時沒有提示,可以不關閉,只是把快速保護的保護范圍加大些,例如失敗數50次 時間段5分鐘 則關閉對應的程序。

“關閉時間限制180秒”是必須的,因為進程關閉的時間,原來為90秒限制,是默認值,如果進程關閉時間超過90秒,則認為超時,從而出現:進程關閉時間超過了限制 日志,所以,適當延長這個時間,可以避免這種錯誤

第2種方法:

原因:獨立進程的 內存堆戔消耗完了,IIS不能創建更多的進程工作空間來處理

解決方法:
1. HKEY_LOCAL_MACHINESystemCurrentControlSetServicesW3SVC
2. 在Parameters鍵下新建一個DWORD項,名字為:UseSharedWPDesktop 值為1 重啟IIS

第3種

問題已解決,發現是數据庫連接無法釋放,不知道是什麼原因,同樣的代碼在本地就是好的,在服務器端就有問題,最后在連接串里加入以下語句解決問題.

Pooling=true; MAX Pool Size=512;Min Pool Size=50;Connection Lifetime=30

第4種

新建應用程序池,不同的網站引用不同程序池。
==================================================================
網絡上有關iis的問題和相關解決方案,多不胜搜,但很多都比較零散,沒有系統的解決方案;另外,有些解決方法,似是而非,不能找到其中的問題關鍵點,本人平時對于服務器的應用上也有點實踐,因此,今天稍稍總結一點平時遇到地問題和解決方法,特別是對iis的特殊權限引起問題、iis應用程序池假死問題和比較罕見的iis重啟命令和自動重啟辦法。其它相關問題,繼續關注本博。
一、2003應用程序池自動死了,不能恢復了,一直出現 Service Unavailable 常見方法如下。
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數据庫,升級至sqlserver數据庫;或者在技朮方面革新,像現在有些網站系統,風訊、動易等cms;pjblog、zblog等博客程序,都支持生成靜態功能.
5:不同網站用不同應用池:根据你自己實際情況而定,站點大的最好獨立一個應用池,限制他的資源超過了自動回收,看上面(1)講到的,這樣就不影響其他站點。中型站點:多個網站共用一個應用池,比如5個站點用一個池,設置他資源時間等等。這樣他們就算超資源了也不影響其他應用池的網站。
6:設置回收時間:很多人以為設置回收池越短越好,其實是錯誤的,每次回收當然是把內存回收回來了,但加重了一次服務器的負擔,當服務器比較繁忙的時候,有可能導致其他應用池死。所以建議設置共1000就行了。其他獨立池按照他網站流量而設置 可以設置600 也行,共用的不建議設置太短。
7:網站后台過不了多久自動退出又要重新登陸:這個情況就是你設置回收時間太短了,按照 6點設置吧。 不要設置什麼20分、30分這樣的,這樣不好的。另外一個原因就是和站的響應設置時間有關,設置得稍長些。
8:windows 2003系統iis6訪問本机的站點時提示“Service Unavailable”;
查看iis的應用程序池,狀況提示為:未指定錯誤,同時應用程序池自動停止運行
用事件查看器查看系統錯誤日志,發現如下提示:
———————————–
應用程序-特定 權限設置未將 COM 服務器應用程序(CLSID 為
{A9E69610-B80D-11D0-B9B9-00A0C922E750}
)的 本地 激活 權限授予用戶 NT AUTHORITYNETWORK SERVICE SID (S-1-5-20)。可以使用組件服務管理工具修改此安全權限。
解決方法,給NETWORK SERVICE 加上訪問iis服務的權限,具體方法如下:
點擊“開始”-“控制面板”-“管理工具”-“組件服務”-“計算机”-“我的電腦”-“DCOM”選項,
選擇其下的“IIS ADMIN SERVICE”,右健選擇“屬性”,找到“安全”,在“啟動和激活權限”中編輯“自定義”,添加帳號“NETWORK SERVICE ”,給該帳號賦予“本地啟動”和“本地激活”的權限,重新啟動IIS之后再訪問同一站點,則一切正常。
9:重啟IIS中的特定應用程序池命令和自動重啟的方法
在操作系統是Windows server 2003 SP1+的情況下,可以用以下命令部分重啟IIS應用程序池:

cscript.exe c:windowssystem32iisapp.vbs /a “DefaultAppPool”

其中/a 代表alternatively,”DefaultAppPool”代表應用程序池的實例名。如果要設置自動重啟這個應用程序池,可以嘗試放在批處理中,用計划任務調用此批處理即可。很多人覺得計划任務不安全,都要禁掉,事實上,計划任務的不安全是建立在其它方面不安全的前提上的,如果由于其它方面的不安全,被放入執行程序,計划任務執行,這和計划任務沒有直接關系。當然,關掉,是會減少一些安全隱患,這是不錯。

 

Related posts 相關文章
SessionManager 是一個躲藏在正常管道的 IIS 後門
More...
IIS APPCMD 回收應用程式集區 POOL
More...
用 GoAccess 即時分析 IIS Access Log
More...
IIS 的 appcmd 指令
More...

作者

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。