出現原因
ServiceUnavailable的出現一般是資源不足,如IIS、CPU或記憶體等,極少數情況下會因asp、.net和php程式錯誤導致出現。一般情況下為多個站共用一個程式池,這個程式池可以簡單理解為資源庫,即這些站點共用這塊資源;記憶體限制為500M物理記憶體(伺服器為8G記憶體)。
如果這個資源被其中一個站用完,則程式池就會停止,所有使用這個程式池的站就會出現“ServiceUnavailable”的提示,直到該程式池被重新啟動。
大多數情況下,500M記憶體完全足夠使用;如果出現垃圾程式或遇到攻擊,則可能出現CPU急速上升或記憶體大量使用,這是大部分“ServiceUnavailable”出現的原因。從目前我們監測的情況看,大部分是CPU占用在90%-100%之間出現的。
解決方法
刷新幾下又可以訪問如果出現“ServiceUnavailable”的提示,刷新幾下又可以訪問。
出現這種情況是由於您的網站超過了iis限制造成的由於2003的作業系統在提示IIS過多時並非像2000系統提示“連結人數過多”,而是提示"ServiceUnavailable",出現這種情況是由於網站超過了系統資源限制造成的,主要是程式占用資源太多。
比如同樣是100人線上的論壇,雷傲論壇所占的資源就是PW論壇所占資源的10倍以上;另外,一些死循環程式,或者不最佳化的程式都會占用太多的系統資源,而系統資源明顯是有限的。不過WINDOWS2003的作業系統,各網站之間是以獨立進程運行的,不會相互影響。
另外,如果你的網站當前訪問人數過多,超過了系統的iis連線數限制,也會出現ServiceUnavailable的提示(win2k主機下出現連線過多就會提示:連線過多,請稍後再試;而win2003的主機剛直接提示:ServiceUnavailable)
沒有限制IIS連線
沒有限制IIS連線,還是遭遇ServiceUnavailable
多見於使用ACCESS資料庫的網站,一般使用windows2003IIS6的用戶可能這個問題一直正常的系統,突然有一個網站打不開了提示:ServiceUnavailable但這個網站並沒有限制IIS連線數。然後馬上影響到了別的網站,不到一會,其他的網站也全變成了ServiceUnavailable這是什麼原因呢?
我們分析後可以知道,還是MS的老問題。ACCESS引擎當了。用伺服器醫生的檔案醫生修復,查看修復結果時會發現一些檔案引起ACCESS引擎“災難性故障”及“未將對象引用設定到對象的實例”的錯誤。通過檔案醫生修復後,系統才會恢復正常。
瀏覽一個Web站點時
瀏覽一個WindowsSharePointServicesWeb站點時,提示:ServiceUnavailable
MicrosoftInternet信息服務(IIS)6.0中沒有正確地配置用於虛擬伺服器的應用程式池,就可能會發生此問題。
解決方案
要解決此問題,按照下列步驟操作:1、驗證是否已為虛擬伺服器配置了應用程式池。默認的應用程式池是MSSharePointPortalAppPool。
請按照下列步驟來確定虛擬伺服器正在使用的應用程式池。
a).單擊“開始”,指向“管理工具”,然後單擊“Internet信息服務(IIS)管理器”。
b).展開“ServerName”,展開“Web站點”,右鍵單擊虛擬伺服器,然後單擊“屬性”。
c).單擊“主目錄”選項卡。為虛擬伺服器配置的應用程式池列在“應用程式池”框中。
d).單擊“確定”。
2、驗證應用程式池帳戶使用的密碼是否正確。IIS不會自動輪詢ActiveDirectory目錄服務中的密碼更改。如果應用程式池帳戶是一個域帳戶,其密碼已過期,則在為此帳戶重新指定一個新密碼後,您可能會收到本文“症狀”部分所描述的錯誤信息。
3、驗證應用程式池帳戶是伺服器上的IIS_WPG組和STS_WPG組的成員。
4.、重新啟動IIS以回收應用程式池
沒有正確載入ISAPI篩選器
ISAPI篩選器沒有載入成功的話會造成任意網站一訪問就出現Serviceunavailable,這個時候需要根據載入失敗的原因解決,或者刪除該ISAPI篩選器
整理資料
原因一:網站超過了IIS連線數解決辦法一:增加IIS連線數
備註一:Windows2003的作業系統在提示IIS過多時並非像win2000系統提示“連結人數過多”,而是提示"ServiceUnavailable"
原因二:網站超過了IIS資源限制
解決辦法二:增加網站的資源
備註二:Winodws2003中網站占用了超過IIS對該網站系統資源的限制後直接提示"ServiceUnavailable"
原因三:網站的程式發生太多的錯誤
解決辦法三:修改程式錯誤
備註三:Winodws2003中網站錯誤太多,就會造成該網站所在的應用程式池出錯,這個時候可以在Windows2003的日誌中看到“應用程式池'xxx'被自動禁用,原因是為此應用程式池提供服務的進程中出現一系列錯誤”,這個時候網站就會直接顯示"ServiceUnavailable"
以上三個原因造成的"ServiceUnavailable",一般現象是出現"ServiceUnavailable"後,多刷新幾次,就可以打開。
原因四:ACCESS引擎錯誤
解決辦法四:重啟IIS
備註四:有一些檔案造成了ACCESS資料庫出現“災難性故障”及“未將對象引用設定到對象的實例”的錯誤
原因四造成的"ServiceUnavailable",現象是所有該伺服器上的使用Access資料庫的網站都出現錯誤,不能訪問。
以上四個原因是常見的造成了"ServiceUnavailable"的原因,其他還有一些問題造成了該問題,基本只要IIS重啟一下就可以的。
ServiceUnavailable的第五種原因就是今天的原因了:ISAPI篩選器沒有正常載入
出現這種情況也有可能是他人非法攻擊,導致網站流量過大·
如超出CPU也會出現這個提示的.
原因六:80連線埠被其它程式占用了。這是個非常隱蔽的原因,如果僅僅在IIS上所有網站都ServiceUnavailable,並且查看一個簡單的html頁都發“應用程式池'xxx'被自動禁用”錯誤,那么在控制台中執行命令"netstat-a-n-o",看看占用80連線埠的是哪個程式。如果您安裝了迅雷,請尤其注意這點,迅雷在默認情況下是要和IIS搶80連線埠的。