共用方式為


優化 IIS 效能

套用 IIS 組態選項以改善 IIS 效能

Internet Information Services (IIS) 公開許多會影響 IIS 效能的組態參數。 本主題描述其中數個參數,並提供設定參數值以改善 IIS 效能的一般指引。

僅記錄基本資訊或完全停用 IIS 記錄

IIS 記錄應該最小化,甚至是在生產環境中停用。 若要停用記錄,請遵循下列步驟:

  1. 按兩下 [開始],指向 [所有程式],按兩下 [ 系統管理工具],然後按兩下 [ Internet Information Services (IIS) 管理員]。

  2. 在 [ 連線] 窗格中,按兩下以展開 [網站],按下以選取您要停用記錄的網站,按兩下以選取 [ 功能檢視],然後按兩下 [記錄 ] 功能。

  3. 按兩下 [動作] 窗格中的 [停用],以停用此網站的記錄。

在生產環境中停用 IIS ASP 偵錯

應該在生產環境中停用 IIS ASP 偵錯。 若要停用 IIS ASP 偵錯,請遵循下列步驟:在 [連線] 窗格中,按一下以展開 [網站],按一下以選取您要停用 ASP 偵錯的網站,按一下以選取 [功能檢視],然後雙擊 [ASP] 功能。 點一下以展開 [編譯],點一下以展開 [偵錯屬性],並確認 [啟用用戶端偵錯][啟用伺服器端偵錯] 都設定為 False

  1. 按兩下 [開始],指向 [所有程式],按兩下 [ 系統管理工具],然後按兩下 [ Internet Information Services (IIS) 管理員]。

  2. 在 [ 連線] 窗格中,按兩下以展開 [ 網站],按下以選取您要停用 ASP 偵錯的網站,按兩下以選取 [ 功能檢視],然後按兩下 ASP 功能。

  3. 點一下以展開 [編譯],點一下以展開 [偵錯屬性],並確認 [啟用用戶端偵錯][啟用伺服器端偵錯] 都設定為 False

  4. 如有必要,請在 [動作] 窗格中點擊 [套用]。

    在 web 應用程式的 web.config 檔案中指定 <編譯 debug=“false”> 區段,以停用 ASP.NET 應用程式和 Web 服務的偵錯。

調整 [每個處理器的 ASP 線程限制] 屬性的值

ASP 每個處理器線程限制 屬性指定 IIS 所建立的每個處理器的工作線程數目上限。 增加每個處理器的線程數限制,直到處理器使用率達到至少 50% 或更高為止。 此設定可大幅影響 Web 應用程式的延展性和伺服器一般效能。 由於此屬性會定義可以同時執行的 ASP 要求數目上限,因此除非您的 ASP 應用程式對外部元件進行擴充呼叫,否則此設定應該維持在預設值。 在此情況下,您可以增加 [每個處理器的線程限制] 值。 這麼做可讓伺服器建立更多線程來處理更多並行要求。 每個處理器限制的線程預設值為 25。 此屬性的建議最大值為100。

若要增加 [每個處理器的線程限制] 的值,請遵循下列步驟:在 [ 連線 ] 窗格中,選取網頁伺服器,按兩下以選取 [ 功能檢視],然後按兩下 ASP 功能。

  1. 按兩下 [開始],指向 [所有程式],按兩下 [ 系統管理工具],然後按兩下 [ Internet Information Services (IIS) 管理員]。

  2. 在 [ 連線 ] 窗格中,選取網頁伺服器,按兩下以選取 [ 功能檢視],然後按兩下 ASP 功能。

  3. 點擊以展開 [限制屬性] 在 [行為] 下,點擊 [每個處理器線程限制],輸入想要的 [每個處理器線程限制] 值,然後在 [動作] 窗格中點擊 [套用]。

    如需取得有關如何修改 IIS 7.5/7.0 <asp> 元素中的<limits> 元素屬性的詳細資訊,請參閱 ASP 限制<限制>https://go.microsoft.com/fwlink/?LinkId=157483)。

備註

因為此屬性只能在伺服器層級套用,因此修改此屬性會影響伺服器上執行的所有網站。

調整 ASP 佇列長度屬性的值

調整此屬性的目標是確保良好的回應時間,同時將伺服器在ASP要求佇列滿時,將 HTTP 503(伺服器太忙碌)錯誤傳送給客戶端的頻率降到最低。 如果 ASP 佇列長度屬性的值太低,伺服器會傳送 HTTP 503 錯誤的頻率更高。 如果 ASP Queue Length 屬性的值太高,使用者可能會覺得伺服器沒有回應,事實上他們的請求只是正在佇列中等待。 藉由在高流量期間監控佇列,您應該辨識網路請求的尖峰和谷的模式。 請記下尖峰值,並設定 ASP Queue Length 屬性的值剛好高於尖峰值。 使用佇列來處理短期尖峰,確保響應時間,並對系統進行節流,以避免在持續、非預期的尖峰發生時出現過載。 如果您沒有用於調整 ASP 佇列長度屬性的數據,建議的起點是將佇列與線程數量設定為一對一的比率。 例如,如果 ASP Threads Per Processor Limit 屬性設定為 25,而且您有四個處理器(4 * 25 = 100 個線程),請將 ASP Queue Length 屬性設定為 100,並從該處微調。

若要增加 Queue Length 屬性的值,請遵循下列步驟:

  1. 按兩下 [開始],指向 [所有程式],按兩下 [ 系統管理工具],然後按兩下 [ Internet Information Services (IIS) 管理員]。

  2. 在 [ 連線] 窗格中,選取 [Web 伺服器],按兩下以選取 [ 功能檢視],然後按兩下 ASP 功能。

  3. 按一下以展開 [限制屬性][行為] 底下,按一下佇列長度,輸入佇列長度所需的值,然後在 [動作] 窗格中按一下 [套用]

    若需修改有關 IIS 7.5/7.0 <asp> 元素中 <limits> 元素屬性的詳細資訊,請參閱 ASP 限制 <limits>https://go.microsoft.com/fwlink/?LinkId=157483)。

備註

因為此屬性只能在伺服器層級套用,因此修改此屬性會影響伺服器上執行的所有網站。

微調 MaxPoolThreads 註冊表項

此設定會指定要為每個處理器建立的集區線程數目。 集區線程會監控網絡上的請求並處理傳入請求。 MaxPoolThreads 計數不包含 ISAPI 應用程式所使用的線程。 一般而言,您不應該為每個處理器建立超過 20 個線程。 MaxPoolThreads 是位於 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\InetInfo\Parameters\ 且預設值為 4 的REG_DWORD登錄專案。

停用 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 上 ASP.NET 線程使用量的部落格https://go.microsoft.com/fwlink/?LinkId=157518)。

為 IIS 7.5/7.0 整合模式設定 ASP.NET 4 的最大併發請求數量

使用 .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 伺服器層級設定壓縮:

    1. 按兩下 [開始],指向 [所有程式],按兩下 [ 系統管理工具],然後按兩下 [ Internet Information Services (IIS) 管理員]。

    2. 在 [ 連線] 窗格中,選取 [Web 伺服器],按兩下以選取 [ 功能檢視],然後按兩下 [壓縮 ] 功能。

    3. 設定所需的壓縮選項,然後按下 [動作] 窗格中的 [套用]。

  • 若要在網站層級設定壓縮:

    1. 按兩下 [開始],指向 [所有程式],按兩下 [ 系統管理工具],然後按兩下 [ Internet Information Services (IIS) 管理員]。

    2. 在 [ 連線 ] 窗格中,按兩下以展開 [網站],按下以選取您要設定壓縮的網站,按兩下以選取 [ 功能檢視],然後按兩下 [壓縮 ] 功能。

    3. 設定所需的壓縮選項,然後按下 [動作] 窗格中的 [套用]。

另請參閱

優化效能