Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> Windows Server系統教程 >> Server 2003 >> 503 service unavailable錯誤說明

503 service unavailable錯誤說明

日期:2017/2/10 9:45:50      編輯:Server 2003

一、如果出現“Service Unavailable”的提示,刷新幾下又可以訪問。

  出現這種情況是由於您的網站超過了iis限制造成的由於2003的操作系統在提示IIS過多時並非像2000系統提示“鏈接人數過多”,而是提 示"Service Unavailable",出現這種情況是由於網站超過了系統資源限制造成的,主要是程序占用資源太多。
  比如同樣是100人在線的論壇,雷傲論壇所占的資源就是PW論壇所占資源的10倍以上;另外,一些死循環程序,或者不優化的程序都會占用太多的系統資源,而系統資源明顯是有限的。不過WINDOWS2003的操作系統,各網站之間是以獨立進程運行的,不會相互影響。
  如果一個網站的程序占資源太多或者發生太多的錯誤,系統日志就會提示:“應用程序池 'xxx' 被自動禁用,原因是為此應用程序池提供服務的進程中出現一系列錯誤,或者提示:應用程序池 'xxx' 超過了其作業限制設置。這時,訪問這個網站就會提示:Service Unavailable。一般系統會在30秒左右恢復正常,多刷新幾次就能正常訪問了。
  另外,如果你的網站當前訪問人數過多,超過了系統的iis連接數限制,也會出現Service Unavailable的提示(win2k主機下出現連接過多就會提示:連接過多,請稍後再試;而win2003的主機剛直接提示:Service Unavailable)

二、沒有限制IIS連接,還是遭遇Service Unavailable

  多見於使用ACCESS數據庫的網站,一般使用windows 2003 IIS 6的用戶可能這個問題一直正常的系統,突然有一個網站打不開了提示: Service Unavailable 但這個網站並沒有限制IIS連接數。然後馬上影響到了別的網站,不到一會,其他的網站也全變成了Service Unavailable 這是什麼原因呢?
  我們分析後可以知道,還是MS的老問題。ACCESS引擎當了。用服務器醫生的文件醫生修復,查看修復結果時會發現一些文件引起ACCESS引擎“災難性故障”及“未將對象引用設置到對象的實例”的錯誤。 通過文件醫生修復後,系統才會恢復正常。

三、浏覽一個 Windows SharePoint Services Web 站點時,提示:Service Unavailable

  Microsoft Internet 信息服務 (IIS) 6.0 中沒有正確地配置用於虛擬服務器的應用程序池,就可能會發生此問題。

  解決方案:

  要解決此問題,按照下列步驟操作:

  1、驗證是否已為虛擬服務器配置了應用程序池。默認的應用程序池是 MSSharePointPortalAppPool。
  請按照下列步驟來確定虛擬服務器正在使用的應用程序池。
  a). 單擊“開始”,指向“管理工具”,然後單擊“Internet 信息服務 (IIS) 管理器”。
  b). 展開“ServerName”,展開“Web 站點”,右鍵單擊虛擬服務器,然後單擊“屬性”。
  c). 單擊“主目錄”選項卡。 為虛擬服務器配置的應用程序池列在“應用程序池”框中。
  d). 單擊“確定”。
  2、驗證應用程序池帳戶使用的密碼是否正確。IIS 不會自動輪詢 Active Directory 目錄服務中的密碼更改。如果應用程序池帳戶是一個域帳戶,其密碼已過期,則在為此帳戶重新指定一個新密碼後,您可能會收到本文“症狀”部分所描述的錯誤信息。
  3、 驗證應用程序池帳戶是服務器上的 IIS_WPG 組和 STS_WPG 組的成員。
  4.、重新啟動 IIS 以回收應用程序池

四、沒有正確加載ISAPI篩選器

  ISAPI篩選器沒有加載成功的話會造成任意網站一訪問就出現Service unavailable,這個時候需要根據加載失敗的原因解決,或者刪除該ISAPI篩選器。
  整理資料:
  原因一:網站超過了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重啟一下就可以的。
  Service Unavailable的第五種原因就是今天的原因了:ISAPI篩選器沒有正常加載。

每個AppPool要指定一個身份(identity)來運行。IIS6中AppPool默認運行身份為NT AUTHORITY\NETWORK SERVICE。這是一個系統內建帳戶,完全受系統控制。它支持所有必要的以服務登錄(Log on as a service)的權限,密碼也是內部來維護——換句話說,我們可以把以服務登錄理解為它可以控制了哪些帳戶能夠使用、操作遠程資源。我們可以通過很多方法控制遠程資源的訪問。比如修改遠程資源ACL表,並允許遠端機器訪問本地資源;或者在遠程訪問時換作遠端授信帳戶(impersonating)進行操作;或者索性讓我們的程序運行在某一個配置帳戶下——log on as a service。不同的是它是宿主在IIS的AppPool中的,必然收到IIS控制,用戶本身沒有辦法像普通服務程序那樣啟動它。我要試驗的就是指定AppPool以配置帳戶啟動。
  
  我們分幾步來部署一個web程序以指定賬戶運行。
  1. 打開IIS6,在AppPool節點找到我們要修改的web程序,右鍵屬性。
  默認IIS是選擇Predefined帳戶:Network Service。現在我們勾選Configurable,並指定帳戶和密碼。注意:這個帳號必須是一個域帳號!
  2. 將我們之前指定的apppool帳號加入IIS_WPG用戶組中。IIS_WPG用戶組維護了所有可以以其中帳戶啟動worker Process的帳戶。Worker Process是由IIS啟動的。
  
  做完這兩步,本以為可以完美的開啟自定義帳戶運行的w3wp.exe。卻不想得到"Service Unavailable”的異常。翻看event log,我們得到以下一些錯誤:
  錯誤一:此錯誤基本就是重復一下Service Unavailable的意思。。。注意主謂關系:有某某後台要啟動某個process來運行appPool。這個process肯定就是w3wp.exe。但那個後台是誰?這裡還不知道。
  
  Event Type: Error
  Event Source: W3SVC
  Event Category: None
  Event ID: 1059
  Date: 1/18/2008
  Time: 11:48:27 AM
  User: N/A
  Computer: HITOMI
  Description:
  A failure was encountered while launching the process serving application pool 'HITOMIWS'. The application pool has been disabled.
  
  For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
  錯誤二:已經告訴我們所指定的appPool帳戶非法。另外一個極重要的提示回答了error一的疑惑:是World Wide Web Publishing Service無法啟動w3wp.exe。(這裡也回答了文章最初的問題)至此,唯一的問題就是為什麼帳戶非法?往下看。。。
  
  Event Type: Warning
  Event Source: W3SVC
  Event Category: None
  Event ID: 1057
  Date: 1/18/2008
  Time: 11:48:27 AM
  User: N/A
  Computer: HITOMI
  Description:
  The identity of application pool 'HITOMIWS' is invalid, so the World Wide Web Publishing Service can not create a worker process to serve the application pool. Therefore, the application pool has been disabled.
  
  For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
  
  錯誤三:謎底揭曉了。該賬戶沒有被賦予logontype4,導致它非法。如果有經驗的話,這種帳戶-logonType控制是在local Security Settings\Local Policy\User Rights Assignments裡定義的。具體來說就是log on as a service。
  
  Event Type: Failure Audit
  Event Source: Security
  Event Category: Logon/Logoff
  Event ID: 534
  Date: 1/18/2008
  Time: 11:48:08 AM
  User: NT AUTHORITY\SYSTEM
  Computer: HITOMI
  Description:
  Logon Failure:
   Reason: The user has not been granted the requested
   logon type at this machine
   User Name: HITOMIWEBSERVICE
   Domain: REDMOND
   Logon Type: 4
   Logon Process: Advapi
   Authentication Package: Negotiate
   Workstation Name: HITOMI
   Caller User Name: HITOMI$
   Caller Domain: REDMOND
   Caller Logon ID: (0x0,0x3E7)
   Caller Process ID: 640
   Transited Services: -
   Source Network Address: -
   Source Port: -
  
  For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
  Start > Run, secpol.msc回車, 打開local Secuirty Settings,展開Local Policy\User Rights Assignments,選擇Log on as a service這個policy,果然裡面有NetworkService和sql server的n多帳戶,我們再把appPool帳戶加到這個list裡面。做完之後,machine需要重新啟動。等一切再次ready以後,我們再試一下web程序,欣喜看到w3wp.exe已經以指定帳號啟動了!
  回頭再考慮一下我們什麼時候要用指定帳戶運行web程序呢?It depends。當我們的web 程序要經常訪問域內其他節點資源的時候,為提高訪問安全要用到指定帳戶,加強ACL控制。其實在大多數情況下NetworkService已經可以夠用了。 

Copyright © Windows教程網 All Rights Reserved