win2003+iis6服務器設置排錯集錦
很多朋友在用IIS6架網站的時候遇到不少問題, 以下是在所知的2003iis碰見的一些問題,只要對著癥狀處理。服務器一定可以使用的。
注:因為問題太多不能一一發圖作為參考請見諒
問題1:未啟用父路徑
癥狀舉例:
Server.MapPath() 錯誤 (ASP 0175 : 80004005)
不允許的 Path 字符
/0709/dqyllhsub/news/OpenDatabase.asp,行 4
在 MapPath 的 Path 參數中不允許字符 (..)。
原因分析:
許多Web頁面里要用到諸如../格式的語句(即回到上一層的頁面,也就是父路徑),而IIS6.0出于安全考慮,這一選項默認是關閉的。
解決方法:
在IIS中 屬性->主目錄->配置->選項中。把”啟用父路徑“前面打上勾。確認刷新。
問題2:ASP的Web擴展配置不當(同樣適用于ASP.NET、CGI)
癥狀舉例:
HTTP 錯誤 404 - 文件或目錄未找到。
原因分析:
在IIS6.0中新增了web程序擴展這一選項,你可以在其中對ASP、ASP.NET、CGI、IDC等程序進行允許或禁止,默認情況下ASP等程序是禁止的。
解決方法:
在IIS中的Web服務擴展中選中Active Server Pages,點擊“允許”。
問題3:身份認證配置不當
癥狀舉例:
HTTP 錯誤 401.2 - 未經授權:訪問由于服務器配置被拒絕。
原因分析:IIS 支持以下幾種 Web 身份驗證方法:
匿名身份驗證
IIS 創建 IUSR_計算機名稱 帳戶(其中 計算機名稱 是正在運行 IIS 的服務器的名稱),用來在匿名用戶請求 Web 內容時對他們進行身份驗證。此帳戶授予用戶本地登錄權限。你可以將匿名用戶訪問重置為使用任何有效的 Windows 帳戶。
基本身份驗證
使用基本身份驗證可限制對 NTFS 格式 Web 服務器上的文件的訪問。使用基本身份驗證,用戶必須輸入憑據,而且訪問是基于用戶 ID 的。用戶 ID 和密碼都以明文形式在網絡間進行發送。
Windows 集成身份驗證
Windows 集成身份驗證比基本身份驗證安全,而且在用戶具有 Windows 域帳戶的內部網環境中能很好地發揮作用。在集成的 Windows 身份驗證中,瀏覽器嘗試使用當前用戶在域登錄過程中使用的憑據,如果嘗試失敗,就會提示該用戶輸入用戶名和密碼。如果你使用集成的 Windows 身份驗證,則用戶的密碼將不傳送到服務器。如果該用戶作為域用戶登錄到本地計算機,則他在訪問此域中的網絡計算機時不必再次進行身份驗證。
摘要身份驗證
摘要身份驗證克服了基本身份驗證的許多缺點。在使用摘要身份驗證時,密碼不是以明文形式發送的。另外,你可以通過代理服務器使用摘要身份驗證。摘要身份驗證使用一種挑戰/響應機制(集成 Windows 身份驗證使用的機制),其中的密碼是以加密形式發送的。
.NET Passport 身份驗證
Microsoft .NET Passport 是一項用戶身份驗證服務,它允許單一簽入安全性,可使用戶在訪問啟用了 .NET Passport 的 Web 站點和服務時更加安全。啟用了 .NET Passport 的站點會依靠 .NET Passport 中央服務器來對用戶進行身份驗證。但是,該中心服務器不會授權或拒絕特定用戶訪問各個啟用了 .NET Passport 的站點。
解決方法:
根據需要配置不同的身份認證(一般為匿名身份認證,這是大多數站點使用的認證方法)。認證選項在IIS的屬性->安全性->身份驗證和訪問控制下配置。
問題4:IP限制配置不當
癥狀舉例:
HTTP 錯誤 403.6 - 禁止訪問:客戶端的 IP 地址被拒絕。
原因分析:
IIS提供了IP限制的機制,你可以通過配置來限制某些IP不能訪問站點,或者限制僅僅只有某些IP可以訪問站點,而如果客戶端在被你阻止的IP范圍內,或者不在你允許的范圍內,則會出現錯誤提示。
解決方法:
進入IIS的屬性->安全性->IP地址和域名限制。如果要限制某些IP地址的訪問,需要選擇授權訪問,點添加選擇不允許的IP地址。反之則可以只允許某些IP地址的訪問。
問題5:IUSR賬號被禁用
癥狀舉例:
HTTP 錯誤 401.1 - 未經授權:訪問由于憑據無效被拒絕。
原因分析:
由于用戶匿名訪問使用的賬號是IUSR_機器名,因此如果此賬號被禁用,將造成用戶無法訪問。
解決辦法:
控制面板->管理工具->計算機管理->本地用戶和組,將IUSR_機器名賬號啟用。
問題6:NTFS權限設置不當
癥狀舉例:
HTTP 錯誤 401.3 - 未經授權:訪問由于 ACL 對所請求資源的設置被拒絕。
原因分析:
Web客戶端的用戶隸屬于user組,因此,如果該文件的NTFS權限不足(例如沒有讀權限),則會導致頁面無法訪問。
解決辦法:
進入該文件夾的安全選項卡,配置user的權限,至少要給讀權限。關于NTFS權限設置這里不再饋述。
問題7:IWAM賬號不同步
癥狀舉例:
HTTP 500 - 內部服務器錯誤
原因分析:
IWAM賬號是安裝IIS時系統自動建立的一個內置賬號。IWAM賬號建立后被Active Directory、IIS metabase數據庫和COM+應用程序三方共同使用,賬號密碼被三方分別保存,并由操作系統負責這三方保存的IWAM密碼的同步工作。系統對IWAM賬號的密碼同步工作有時會失效,導致IWAM賬號所用密碼不統一。
解決辦法:
如果存在AD,選擇開始->程序->管理工具->Active Directory用戶和計算機。為IWAM賬號設置密碼。
運行c:\Inetpub\AdminScripts>adsutil SET w3svc/WAMUserPass +密碼 同步IIS metabase數據庫密碼
運行cscript c:\inetpub\adminscripts\synciwam.vbs -v 同步IWAM賬號在COM+應用程序中的密碼
問題8:MIME設置問題導致某些類型文件無法下載(以ISO為例)
癥狀舉例:
HTTP 錯誤 404 - 文件或目錄未找到。
原因分析:
IIS6.0取消了對某些MIME類型的支持,例如ISO,致使客戶端下載出錯。
解決方法:
在IIS中 屬性->HTTP頭->MIME類型->新建。在隨后的對話框中,擴展名填入.ISO,MIME類型是application。
問題9:無法在網站后臺上傳超過200k的文件。
原因:
在 IIS 6.0 中,默認設置是特別嚴格和安全的,這樣可以最大限度地減少因以前太寬松的超時和限制而造成的攻擊。
配置數據庫屬性實施的最大 ASP 張貼大小為 204,800 個字節,并將各個字段限制為 100 KB。在 IIS 6.0 之前的版本中,沒有張貼限制。
這就造成了文件上傳不能超過200k,而事實上是提交數據不能超過200k,你可以發一個很長的帖子試試,也會出現這個錯誤
解決辦法:
然后在服務里關閉iis admin service服務
找到windows\system32\inesrv\下的metabase.xml,
打開,找到ASPMaxRequestEntityAllowed 把他修改為需要的值,默認為204800,即200K
然后重啟iis admin service服務
把它修改為51200000(50M)
另外,防火墻阻止,ODBC配置錯誤,Web服務器性能限制,線程限制等因素也是造成IIS服務器無法訪問的可能原因,這里就不再一一饋述了。希望此帖能解決大家的大部分問題:)
問題10:VPS服務器的w3wp.exe進程占用cpu和內存過多的問題
在IIS6下,經常出現w3wp.exe的內存及CPU占用不能及時釋放,從而導致服務器響應速度很慢。
解決CPU占用過多:
1、在IIS中對每個網站進行單獨的應用程序池配置。即互相之間不影響。
2、設置應用程序池的CPU監視,不超過25%(服務器為4CPU),每分鐘刷新,超過限制時關閉。
根據w3wp取得是哪一個應用程序池:
1、在任務管理器中增加顯示pid字段。就可以看到占用內存或者cpu最高的進程pid
2、在命令提示符下運行iisapp -a。注意,第一次運行,會提示沒有js支持,點擊確定。然后再次運行就可以了。這樣就可以看到pid對應的應用程序池。(iisapp實際上是存放在C:\windows\system32目錄下的一個VBS腳本,全名為iisapp.vbs,如果你和我一樣,也禁止了Vbs默認關聯程序,那么就需要手動到該目錄,先擇打開方式,然后選“Microsoft (r) Windows Based Script Host”來執行,就可以得到PID與應用程序池的對應關系。)
3、到iis中察看該應用程序池對應的網站,就ok了,做出上面的內存或CPU方面的限制,或檢查程序有無死循環之類的問題。
解決內存占用過多,可以做以下配置:
1、在IIS中對每個網站進行單獨的應用程序池配置。即互相之間不影響。
2、設置應用程序池的回收時間,默認為1720小時,可以根據情況修改。再設置當內存占用超過多少(如500M),就自動回收內存。
我的設置如下:
首先是對CPU的限制:在啟用cpu監視后,我設置該應用程序池最大的cpu使用率為50%。設置刷新cpu時間為1分鐘,設置操作為“關閉”。最大工作進程數設置為1。這個意思是,IIS刷新檢測該獨立池的CPU使用情況時間為1分鐘,如果超過設置的cpu限制50%,就會發出關閉池的指令,要求池在指定的時間內關閉。如果池成功在這個時間內關閉,IIS會重啟動一個新池,此段時間很短,一般不會有什么感覺,池就重新開啟了,對于訪問網站的人基本是不會有感覺的。但如果池沒有在指定時間內關閉,IIS就會強行關閉它一個刷新CPU時間。在這個停止的時間內,網站無法訪問,提示“Service Unavaliable”。
關閉時間和啟動時間間隔設置:設短一些比如10秒,這樣當您的網站程序大量占用系統資源時IIS自動快速回收進程并且快速啟動進程,您的網站暫時還可以將就著工作。
對內存的限制及進程回收時間的設置:我設置為內存占用超過800M就自動回收內存,虛擬內存沒有做限制。進程回收時間我保持默認沒有修改。各位可以根據自己的情況設置更短的時間。對應用程序池最大虛擬內存也可以在此進行設置,超過了設置的最大虛擬內存,該池會就被回收。
最后綜合落伍wlmmc的一些經驗,總結一些需要注意的問題:
1、 要限制一個站點的CPU使用,必須將該站點設置為獨立應用程序池,共用應用程序池是無法限制單個站點的。IIS獨立應用程序池,就需要獨立的進程,非常消耗內存。獨立池越多,就有越多的W3WP進程。對于每個站點均要獨立應用程序池的服務器,在一般的普通P43.0 2G內存的普通服務器上,建議不要超過50個站點,最好30以內,不然服務器壓力非常大。在配置上,我一般把資源消耗較大的網站獨立一個池,一般普通BBS或者生成HTML的系統大概5個站一個池。普通網站以及一些企業站點均共用一個池。
2、根據wlmmc的經驗,在服務器硬件允許的情況下,一般不要限制站點內存使用,這樣能夠保證網站運行,不會出現用戶掉線情況。需要限制某站的最大虛擬內存不要小于64M,不然可能出現一些未知的錯誤。
3、這些都不是根本解決辦法,它的根本問題是網站程序有問題,要解決根本問題還要從程序查起。根據本文開頭提到的方法查到具體的應用程序池,找到使用此應用程序池的網站,解決網站程序存在的問題,如死循環之類。
4、除了w3wp.exe, 在調用數據庫進行大量查詢操作的時候,也會大量占用CPU資源,這是難免的(數據庫方面的語句及結構優化不在本文討論范圍之內)。個人認為,只要不是CPU長時間占用100%, 一般在75%左右都是正常的。
|