最佳化 IIS 效能
套用 IIS 組態選項以改善 IIS 效能
Internet Information Services (IIS) 公開許多會影響 IIS 效能的組態參數。 本主題描述其中幾個參數,並提供設定參數值以改善 IIS 效能的一般指引。
僅記錄基本資訊或完全停用 IIS 記錄
IIS 記錄應在生產環境中最小化或甚至停用。 若要停用記錄,請遵循下列步驟:
按一下 [開始],指向 [所有程式],按一下 [ 系統管理工具],然後按一下 [ Internet Information Services (IIS) 管理員]。
在 [ 連線] 窗格中,按一下以展開 [網站],按一下以選取您要停用記錄的網站,按一下以選取 [ 功能檢視],然後按兩下 [記錄 ] 功能。
按一下 [動作] 窗格中的 [停用],以停用此網站的記錄。
在生產環境中停用 IIS ASP 偵錯
應在生產環境中停用 IIS ASP 偵錯。 若要停用 IIS ASP 偵錯,請遵循下列步驟:在 [ 連線] 窗格中,按一下以展開 [站台],按一下以選取您要停用 ASP 偵錯的網站,按一下以選取 [ 功能檢視],然後按兩下 ASP 功能。 按一下以展開 [編譯],按一下以展開 [ 偵錯屬性],並確認 [ 啟用用戶端 偵錯] 和 [ 啟用伺服器端 偵錯] 都設定為 False。
按一下 [開始],指向 [所有程式],按一下 [ 系統管理工具],然後按一下 [ Internet Information Services (IIS) 管理員]。
在 [ 連線] 窗格中,按一下以展開 [站台],按一下以選取您要停用 ASP 偵錯的網站,按一下以選取 [ 功能檢視],然後按兩下 ASP 功能。
按一下以展開 [編譯],按一下以展開 [ 偵錯屬性],並確認 [ 啟用用戶端 偵錯] 和 [ 啟用伺服器端 偵錯] 都設定為 False。
如有必要,請按一下 [動作] 窗格中的 [套用]。
在 web 應用程式的 web.config 檔案中指定 < 編譯 debug=「false」 > 區段,以停用 ASP.NET 應用程式和 Web 服務的偵錯。
微調 [每個處理器的 ASP 執行緒限制] 屬性的值
[ 每個處理器的 ASP 執行緒限制 ] 屬性會指定 IIS 所建立之每個處理器的背景工作執行緒數目上限。 增加每個處理器的執行緒限制值,直到處理器使用率至少符合 50% 或更新版本為止。 此設定可能會大幅影響 Web 應用程式的延展性,以及一般伺服器的效能。 因為這個屬性會定義可以同時執行的 ASP 要求數目上限,所以除非您的 ASP 應用程式對外部元件進行擴充呼叫,否則此設定應該維持在預設值。 在此情況下,您可以增加每個處理器的執行緒限制值。 這麼做可讓伺服器建立更多執行緒來處理更多並行要求。 每個處理器限制的執行緒預設值為 25。 此屬性的建議最大值為 100。
若要增加 [每個處理器限制執行緒] 的值,請遵循下列步驟:在 [ 連線 ] 窗格中,選取網頁伺服器,按一下以選取 [功能檢視],然後按兩下 ASP 功能。
按一下 [開始],指向 [所有程式],按一下 [ 系統管理工具],然後按一下 [ Internet Information Services (IIS) 管理員]。
在 [ 連線] 窗格中,選取網頁伺服器,按一下以選取 [功能檢視],然後按兩下 ASP 功能。
按一下以展開 [行為] 底下的 [限制屬性],按一下 [每個處理器限制的執行緒數],輸入 [每個處理器限制的執行緒] 所需的值,然後按一下 [動作] 窗格中的 [套用]。
如需如何在 IIS 7.5/7.0 < asp > 元素的 limits > 元素中 < 修改屬性的詳細資訊,請參閱ASP 限制 <> (https://go.microsoft.com/fwlink/?LinkId=157483) 。
注意
因為此屬性只能在伺服器層級套用,所以修改此屬性會影響伺服器上執行的所有網站。
調整 ASP 佇列長度屬性的值
調整此屬性的目標是確保良好的回應時間,同時將伺服器在 ASP 要求佇列滿時傳送 HTTP 503 (伺服器太忙碌的頻率降到用戶端) 錯誤。 如果 ASP 佇列長度屬性的值太低,伺服器將會以更高的頻率傳送 HTTP 503 錯誤。 如果 ASP 佇列長度屬性的值太高,使用者可能會發現伺服器實際上在佇列中等候時沒有回應。 藉由在高流量期間監看佇列,您應該辨識 Web 要求尖峰和矽谷的模式。 記下尖峰值,並在尖峰值上方設定 ASP 佇列長度屬性的值。 使用佇列來處理短期尖峰、確保回應時間,以及節流系統,以避免在持續發生非預期的尖峰時發生多載。 如果您沒有調整 ASP 佇列長度屬性的資料,良好的起點就是將一對一的佇列比例設定為匯流排程。 例如,如果 ASP Threads Per Processor Limit 屬性設定為 25,而且您有四個處理器 (4 * 25 = 100 個執行緒) ,請將 ASP Queue Length 屬性設定為 100,並從該處微調。
若要增加佇列長度屬性的值,請遵循下列步驟:
按一下 [開始],指向 [所有程式],按一下 [ 系統管理工具],然後按一下 [ Internet Information Services (IIS) 管理員]。
在 [ 連線] 窗格中,選取 Web 服務器,按一下以選取 [功能檢視],然後按兩下 ASP 功能。
按一下以展開[行為] 底下的 [限制屬性],按一下 [佇列長度],輸入 [佇列長度] 所需的值,然後按一下 [動作] 窗格中的 [套用]。
如需如何在 IIS 7.5/7.0 < asp > 元素的 limits > 元素中 < 修改屬性的詳細資訊,請參閱ASP 限制 <> (https://go.microsoft.com/fwlink/?LinkId=157483) 。
注意
因為此屬性只能在伺服器層級套用,所以修改此屬性會影響伺服器上執行的所有網站。
微調 MaxPoolThreads 登錄專案
此設定會指定要為每個處理器建立的集區執行緒數目。 集區執行緒watch要求和處理傳入要求的網路。 MaxPoolThreads 計數不包含 ISAPI 應用程式所取用的執行緒。 一般而言,您不應該為每個處理器建立超過 20 個執行緒。 MaxPoolThreads 是REG_DWORD登錄專案,其預設值為 4 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\InetInfo\Parameters\。
停用 WCF 服務追蹤
使用組態編輯器工具 (SvcConfigEditor.exe) 在生產環境中停用 WCF 服務追蹤。 如需組態編輯器工具的詳細資訊,請參閱 組態編輯器工具 (SvcConfigEditor.exe) (https://go.microsoft.com/fwlink/?LinkID=127070) 。
設定 IIS 7.5/7.0 整合模式的 ASP.NET 2.0 MaxConcurrentRequests
在整合模式中 ASP.NET 2.0 裝載于 IIS 7.5/7.0 時,使用執行緒的方式會與傳統模式中的 IIS 7.5/7.0 不同。 當 ASP.NET 2.0 裝載于整合模式的 IIS 7.5 上時,ASP.NET 2.0 會限制同時執行的要求數目,而不是同時執行的執行緒數目。 針對同步案例,這會間接限制執行緒數目,因為要求數目會與執行緒數目相同。 但在非同步案例中,要求和執行緒數目可能會非常不同,因為您可能有比執行緒更多的要求。 在整合模式的 IIS 7.5 上執行 ASP.NET 2.0 時,會忽略 machine.config 中 「HTTPRuntime」 元素的 minFreeThreads 和 minLocalRequestFreeThreads。 針對 IIS 7.5 整合模式,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\2.0.50727.0 內名為 MaxConcurrentRequestsPerCPU 的 DWORD 會決定每個 CPU 的並行要求數目。 根據預設,登錄機碼不存在,且每個 CPU 的要求數目限制為 12。 .NET Framework 3.5 SP1 包含 v2.0 二進位檔的更新,可透過 aspnet.config 檔案設定 IIS 應用程式集區。 此設定僅適用于整合模式, (傳統/ISAPI 模式會忽略這些設定) 。以下列出具有預設值的新 aspnet.config 組態區段:
<system.web>
<applicationPool maxConcurrentRequestsPerCPU="12" maxConcurrentThreadsPerCPU="0" requestQueueLimit="5000"/>
</system.web>
在 IIS 7.5 整合模式中,machine.config 檔案 「processModel」 區段中的 maxWorkerThreads 和 maxIoThreads 參數不會用來控管執行中要求的數目,但它們仍然用來控管 ASP.NET 所使用的 CLR 執行緒集區大小。 當 machine.config 的 「processModel」 區段具有 「autoConfig=true」 (,這是預設設定) ,這會將應用程式集區提供給每個邏輯 CPU 最多 100 個背景工作執行緒, (MaxWorkerThreads) 。 因此,具有 2 個雙核心 CPU 的通用商用伺服器會有 400 個 MaxWorkerThreads。 這應該足以滿足所有需求最高的應用程式。
如需在 IIS 7.5 上設定 ASP.NET 執行緒使用方式的詳細資訊,請參閱 Thomas Marquardt 的部落格:IIS 7.0 () https://go.microsoft.com/fwlink/?LinkId=157518 上的 ASP.NET 執行緒使用量。
設定 IIS 7.5/7.0 整合模式 ASP.NET 4 MaxConcurrentRequests
使用 .NET Framework 4 時,maxConcurrentRequestsPerCPU 的預設設定為 5000,這是非常大量的數位,因此會允許大量非同步要求同時執行。 如需詳細資訊,請參閱< applicationPool > 元素 (Web 設定) (https://go.microsoft.com/fwlink/?LinkID=205339) 。
針對 IIS 7.5/7.0 整合模式,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\4.0.30319.0 內名為 MaxConcurrentRequestsPerCPU 的 DWORD 會決定每個 CPU 的並行要求數目。 根據預設,登錄機碼不存在,且每個 CPU 的要求數目限制為 5000。
啟用 IIS HTTP 壓縮
若要更有效率地使用可用的頻寬,請啟用 IIS HTTP 壓縮。 不論內容是從本機儲存體或 UNC 資源提供,HTTP 壓縮都會在啟用壓縮的瀏覽器與 IIS 之間提供更快的傳輸時間。
若要在 Web 服務器層級設定壓縮:
按一下 [開始],指向 [所有程式],按一下 [ 系統管理工具],然後按一下 [ Internet Information Services (IIS) 管理員]。
在 [ 連線] 窗格中,選取 Web 服務器,按一下以選取 [功能檢視],然後按兩下 [壓縮 ] 功能。
設定所需的壓縮選項,然後按一下 [動作] 窗格中的 [套用]。
若要在網站層級設定壓縮:
按一下 [開始],指向 [所有程式],按一下 [ 系統管理工具],然後按一下 [ Internet Information Services (IIS) 管理員]。
在 [ 連線] 窗格中,按一下以展開 [網站],按一下以選取您要設定壓縮的網站,按一下以選取 [ 功能檢視],然後按兩下 [壓縮 ] 功能。
設定所需的壓縮選項,然後按一下 [動作] 窗格中的 [套用]。