Service Unavailable錯誤六大原因

原因一:網站超過了IIS連接數
解決辦法一:增加IIS連接數
備註一:Windows 2003的操作系統在提示IIS過多時並非像win2000系統提示“鏈接人數過多”,而是提示"Service Unavailable"

 

原因二:網站超過了IIS資源限制
解決辦法二:增加網站的資源
備註二:Winodws2003中網站佔用了超過IIS對該網站系統資源的限制後直接提示"Service Unavailable"

 

原因三:網站的程序發生太多的錯誤
解決辦法三:修改程序錯誤
備註三:Winodws2003中網站錯誤太多,就會造成該網站所在的應用程序池出錯,這個時候可以在Windows2003的日誌中看到“應用程序池 'xxx' 被自動禁用,原因是爲此應用程序池提供服務的進程中出現一系列錯誤”,這個時候網站就會直接顯示"Service Unavailable"

以上三個原因造成的"Service Unavailable",一般現象是出現"Service Unavailable"後,多刷新幾次,就可以打開。

 

原因四:ACCESS引擎錯誤
解決辦法四:重啓IIS
備註四:有一些文件造成了ACCESS數據庫出現“災難性故障”及“未將對象引用設置到對象的實例”的錯誤

原因四造成的"Service Unavailable",現象是所有該服務器上的使用Access數據庫的網站都出現錯誤,不能訪問。

以上四個原因是常見的造成了"Service Unavailable"的原因,其他還有一些問題造成了該問題,基本只要IIS重啓一下就可以的。

 

原因五:ISAPI篩選器沒有正常加載

1、打開該網站,直接顯示Service Unavailable,那就去看IIS,發現該網站所在的應用程序池被禁用;

2、手動啓動該應用程序池,再打開該網站,繼續提示Service Unavailable;

3、把該網站換了一個應用程序池,再打開該網站,還是提示Service Unavailable;

從上面三點來看,問題不在網站,也不在應用程序池,而在IIS本身,進入下一個階段的排查。

  1. 打開“事件查看器”,先查看系統日誌,裏面出現了很多來自W3SVC的日誌,如下圖所示。
     
  2. 任意點開錯誤日誌,顯示如下圖內容
     
  3. 再到應用程序日誌裏面查看,也是有很多的錯誤日誌,顯示如下圖內容
     
  4. 任意點開錯誤日誌,顯示如下圖內容
      
  5. 已經明白了錯誤之所在,是因爲PHP的ISAPI沒有加載成功造成的,再到IIS中確認一下,果然PHP的篩選器狀態前是紅色的向下箭頭,沒有加載成功,如下所示
     
  6. 一般加載不成功都是因爲NTFS權限造成的,就去看一下PHP目錄的NTFS權限,顯示只有管理員組和系統組可以訪問,如下圖所示
     
  7. 添加用戶組的權限到PHP目錄,設置權限如下圖所示。
     
  8. 設置完畢,單擊“開始”——“運行”,輸入iisreset重啓IIS
     
  9. IIS重啓完畢,再打開IIS管理器查看ISAPI篩選器狀態,此時PHP已經成功加載
      
  10. 最後,在瀏覽器中打開網站,發現已經正常顯示出來了。

原因六:NETWORK SERVICE用戶沒有權限啓動IIS Admin Service

因爲是新裝的IIS服務器,一般來說問題不可能出在IIS本身,出現這樣的問題一般先從權限方面考慮,先考慮IIS服務的啓動帳戶沒有權限啓動IIS。

  1. 單擊“開始”——“設置”——“控制面板”——“管理工具”——“服務”,打開本地服務管理器,找到IIS Admin Service,雙擊打開IISADMIN屬性,選擇“登陸”選項卡,顯示登陸身份爲本地系統帳戶,那IISADMIN服務就沒有權限問題。
  2. 單擊“開始”——“設置”——“控制面板”——“管理工具”——“服務”,打開本地服務管理器,找到World Wide Web Publishing Service,雙擊打開W3SVC服務屬性,選擇“登陸”選項卡,顯示登陸身份爲本地系統帳戶,那W3SVC服務就沒有權限問題。(這裏爲了更加易操作,將打開“服務”的操作重新說了一遍)

從這裏可以排除了服務啓動帳號沒有權限啓動的問題,下面還是回到終極解決方法中來。

  1. 現象:單擊“開始”——“設置”——“控制面板”——“管理工具”——“事件查看器”,打開事件查看器,單擊“系統”,看到很多警告和錯誤,主要是以下幾個:
    1)來源是“W3SVC”、事件ID爲“1002”的錯誤,描述是“應用程序池 'DefaultAppPool' 被自動禁用,原因是爲此應用程序池提供服務的進程中出現一系列錯誤。”
    2)來源是“W3SVC”、事件ID爲“1009”的警告,描述是“爲應用程序池 'DefaultAppPool' 提供服務的進程意外終止。進程 ID 是 '1756'。進程退出代碼是 '0xffffffff'。”
    3)來源是“DCOM”、事件ID爲“10016”的錯誤,描述是“應用程序-特定 權限設置未將 COM 服務器應用程序(CLSID 爲{A9E69610-B80D-11D0-B9B9-00A0C922E750})的 本地 激活 權限授予用戶 NT AUTHORITY/NETWORK SERVICE SID (S-1-5-20)。可以使用組件服務管理工具修改此安全權限。”
  2. 分析:通過這幾個事件可以判定應該是第三個事件ID爲“10016”的DCOM錯誤引起了事件ID爲1009的應用程序池意外退出,從而造成事件ID爲1002的應用程序池被自動禁用的W3SVC錯誤,下面就來解決。
  3. 問題確定:通過DCOM錯誤的提示,原因是NETWORK SERVICE用戶沒有權限啓動{A9E69610-B80D-11D0-B9B9-00A0C922E750},

找到了原因,下面就來解決這個問題

  1. 先查找這個CLSID{A9E69610-B80D-11D0-B9B9-00A0C922E750}對應的服務,單擊“開始”——“運行”,輸入“regedit”啓動註冊表編輯器,在註冊表編輯器的左側樹中選中“我的電腦”,再使用快捷鍵“Ctrl+F”打開查找對話框,在“查找目標”後輸入剛纔的CLSID:“{A9E69610-B80D-11D0-B9B9-00A0C922E750}”,“查看”的複選框中只保留“項”,回車執行查找任務。
  2. 查找到該CLSID,在註冊表編輯器右側顯示了該CLSID的信息,從該信息得知,該CLSID對應的服務是IIS Admin Service,現在就可以確定NETWORK SERVICE用戶沒有權限啓動IIS Admin Service。
  3. 打開“開始”-“控制面板”-“管理工具”-“組件服務”-“計算機”-“我的電腦”-“DCOM配置”選項,找到“IIS Admin Service”,右健選擇“屬性”,找到“安全”,在“啓動和激活權限”中編輯“自定義”,添加帳號“NETWORK SERVICE ”, 賦予“本地啓動”和“本地激活”的權限,重新啓動IIS。
  4. 重啓IIS,再次打開網頁,現在已經正常顯示了。

第六種原因造成service unavailable圓滿解決。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章