1. 程式人生 > >開啟該網站,顯示Service Unavailable,啟動程式池仍無效,解決方案!

開啟該網站,顯示Service Unavailable,啟動程式池仍無效,解決方案!

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

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

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

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

 

1.開啟“事件檢視器”,先檢視系統日誌,裡面出現了很多來自W3SVC的日誌,如下圖所示。

2.任意點開錯誤日誌,顯示如下圖內容

3.再到應用程式日誌裡面檢視,也是有很多的錯誤日誌,顯示如下圖內容

4.檢視錯誤日誌,顯示如下圖內容

5.報錯:無法載入站點/服務的所有 ISAPI 篩選器。因此啟動中止。隨後開啟下面的

提示:HTTP 篩選器 DLL C:\Program Files\ISAPI_Rewrite\ISAPI_Rewrite.dll 載入失敗。資料是錯誤。

那麼答案就很明顯了,是【ISAPI_Rewrite】的問題;

6.根據提示的路徑,發現根本就找不到這個檔案,鬱悶……難道是誰刪了?

7.檢視IIS》網站》ISAPI篩選器

發現這個“ISAPI_Rewrite”的箭頭是“紅色”,並且箭頭朝下;點選編輯,發現路徑和提示的路徑一直,斷定這個東西應該在C盤,只是路徑錯了,(因為我沒有刪除這個東西,所以由此斷定)

8.開啟C盤搜尋,ISAPI_Rewrite,發現在“C:\Program Files\Fuck”這個目錄下,之前寫的目錄“C:\Program Files\ISAPI_Rewrite\ISAPI_Rewrite.dll”是錯誤的;

進入》IIS》網站》ISAPI篩選器》選中ISAPI_Rewrite》點選旁邊的”編輯“》把路徑修改為正確的路徑》重啟IIS》重新整理網站,正常訪問;

 

 

參考:

win2003 IIS6無法自動啟動 來源:W3SVC,型別:錯誤,事件ID:1002,描述:應用程式池 被自動禁用,原因是為此應用程式池提供服務的程序中出現一系列錯誤 ?

http://www.360doc.com/content/14/1119/01/16402602_426289088.shtml

這幾天在客戶方伺服器上(伺服器為win2003,iis為iis6)部署了系統,之前一直是部署在win2008的iis7下面,還未出現過問題,當然,首次在iis6下部署也花了點時間,最終能夠正常訪問,但是部署完成之後第二天,客戶就給我打電話說,系統無法訪問,我開啟一看,錯為:“Service Unavailable”,服務不可用??第一時間想到iis服務有問題,進去一看,果然,系統所在應用程式池關閉了?本來是啟動的,怎麼好好關閉了?後來問了下那邊網管,是因為重啟了伺服器,再看了下其他的應用程式池,都能夠啟動,鬱悶了,先給啟動吧,然後按照其他程式池的設定重新配置了一番,再重新啟動,好了。

本以為這樣就Ok了,誰知今天又給我打電話說之前的問題又出現了,尼瑪坑爹啊,仔細看了下系統的日誌的詳細:“來源:W3SVC,型別:錯誤,事件ID:1002,描述:應用程式池 *** 被自動禁用,原因是為此應用程式池提供服務的程序中出現一系列錯誤”,被自動禁用?這個程式又得罪誰了,最後找了下資料,原來是程式池的啟動賬號許可權不夠,按照下面的順序給配置起來,重新整理下iis就好了。

 給使用者NETWORK SERVICE加上訪問IIS服務的許可權

開始 – 控制面板 – 管理工具 – 元件服務 – 計算機 – 我的電腦 – DCOM – IIS ADMIN SERVICE – 屬性 – 安全 – 啟動和啟用許可權 – 自定義 – 添      加帳號“NETWORK SERVICE”,給該帳號賦予“本地啟動”和“本地啟用”的許可權

在cmd下輸入“IISRESET”命令(不含引號)重新啟動IIS

 

當然,造成 “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圓滿解決。