共用方式為


Windows Server Update Services 最佳做法

本文提供避免因 WSUS 設計或設定限制而導致效能不佳之設定的秘訣。

原始產品版本: Configuration Manager (目前分支),Windows Server Update Services
原始 KB 編號: 4490414

容量限制

雖然每部伺服器 WSUS 可以支援 100,000 個用戶端 (當您使用 Configuration Manager 時為 150,000 個用戶端),但我們不建議達到此限制。

相反地,請考慮使用 2-4 部伺服器的組態來共用相同的 SQL Server 資料庫。 如此一來,您就可以安全地使用數位。 如果有一部伺服器關閉,就不會立即中斷您的週末,因為當您必須針對最新的零時差惡意攻擊進行更新時,沒有任何用戶端可以更新。

共用資料庫案例也會防止掃描風暴。

當許多用戶端變更 WSUS 伺服器且伺服器未共用資料庫時,可能會發生掃描風暴。 WSUS 會追蹤資料庫中的活動,讓兩者都知道自用戶端上次掃描後已變更的內容,而且只會傳送自之後更新的中繼資料。

如果用戶端變更為使用不同資料庫的不同 WSUS 伺服器,則必須執行完整掃描。 完整掃描可能會導致大型中繼資料傳輸。 在這些案例中,每個用戶端的傳輸可能會超過 1 GB,特別是 WSUS 伺服器未正確維護時。 它可以產生足夠的負載,以便在用戶端與 WSUS 執行個體通訊時造成錯誤。 在此情況下,用戶端會重複重試。

共用資料庫表示當用戶端切換至使用相同 DB 的另一個 WSUS 執行個體時,不會造成掃描懲罰。 負載增加並不是您為切換資料庫所承擔的大量懲罰。

Configuration Manager 用戶端掃描對 WSUS 的需求高於獨立自動更新。 因為 Configuration Manager 包含合規性檢查,所以會要求使用準則進行掃描,以傳回所有處於拒絕狀態的更新。

當自動更新代理程式掃描,或您選取 [檢查主控台中的更新] 時,代理程式會傳送準則,只擷取已核准安裝的更新。 傳回的中繼資料通常會小於由 Configuration Manager 起始掃描時。 更新代理程式會快取資料,而下一個掃描要求會從用戶端快取傳回資料。

停用回收和設定記憶體限制

WSUS 會實施從資料庫擷取更新中繼資料的內部快取。 這項作業耗費大量資源且非常耗用記憶體。 當 WSUSPool 超過預設的私人和虛擬記憶體限制時,可能會導致裝載 WSUS (稱為 WSUSPool) 的 IIS 應用程式集區回收。

當集區回收時,會移除快取,而且必須重建。 當用戶端正在進行增量掃描時,這不是大問題。 但是,如果您最終會遇到掃描風暴案例,集區將會持續回收。 當您提出掃描請求時,用戶端會收到錯誤,例如 HTTP 503 錯誤。

建議您增加預設的 佇列長度,並將其設定為 0 來停用虛擬和私人記憶體限制。 IIS 每隔 29 小時會實施應用程式集區的自動回收、Ping 和閒置逾時,全部都應該停用。 這些設定位於 IIS 管理員>應用程式集區>中選擇 [WsusPool],然後單擊 IIS 管理員右側窗格中的 [進階設定] 連結。

以下是建議變更的摘要,以及相關的螢幕擷取畫面。 如需詳細資訊,請參閱在 Configuration Manager 中規劃軟體更新

設定名稱
佇列長度 2000 (從預設值 1000)
閒置逾時 (分鐘) 0 (從預設值 20)
Ping 已啟用 False (從預設值 True)
私人記憶體限制 (KB) 0 (無限制,從預設值 1,843,200 KB)
一般時間間隔 (分鐘) 0 (以防止回收,並從預設值 1740 修改)

[進階設定] 視窗中 [設定] 的螢幕擷取畫面。

在快取了大約 17,000 個更新的環境中,建置快取時可能需要超過 24 GB 的記憶體,直到穩定 (在大約 14 GB) 為止。

(如果您想要節省頻寬) 請檢查是否已啟用壓縮

WSUS 會使用呼叫 Xpress 編碼的壓縮類型。 它會在更新中繼資料上實施壓縮,並可大幅節省頻寬。

在 IIS ApplicationHost.config 中會啟用 Xpress 編碼,並在 <httpCompression> 元素下方使用這一列和登錄設定:

  • ApplicationHost.Config

    <scheme name=“xpress” doStaticCompression=“false” doDynamicCompression=“true” dll=“C:\Program Files\Update Services\WebServices\suscomp.dll” staticCompressionLevel=“10” dynamicCompressionLevel=“0” />

  • 登錄機碼

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Update Services\Server\Setup\IIsDynamicCompression

如果兩者都不存在,可以藉由執行此命令,然後在 IIS 中重新啟動 WsusPool 應用程式集區來加以啟用。

cscript "%programfiles%\update services\setup\DynamicCompression.vbs" /enable "%programfiles%\Update Services\WebServices\suscomp.dll"

Xpress 編碼會增加一些 CPU 額外負荷,如果頻寬不是問題,但 CPU 使用量是問題,則可以停用。 下列命令會將其關閉。

cscript "%programfiles%\update services\setup\DynamicCompression.vbs" /disable

設定產品和類別

當您設定 WSUS 時,請只選擇您打算部署的產品和類別。 您可以一律同步處理稍後必須具備的類別和產品。 當您不打算部署它們時,新增它們會增加 WSUS 伺服器上的中繼資料大小和額外負荷。

停用 Itanium 更新和其他不必要的更新

這應該不會是較長的問題,因為 Windows Server 2008 R2 是支援 Itanium 的最後一個版本。 但值得一提。

在您的環境中自訂並使用 指令碼,以拒絕 Itanium 架構更新。 指令碼也可以拒絕更新標題中包含 預覽Beta 的更新。

這會導致 WSUS 主控台更具回應性,但不會影響用戶端掃描。

拒絕已取代的更新並執行維護

您可以執行其中一個最重要的動作來協助 WSUS 更好地執行。 將更新保留在已取代的時間 (例如,在不再部署更新之後) 是 WSUS 效能問題的主要原因。 如果您仍在部署它們,可以保留它們。 完成之後,請將它們移除。

如需拒絕已取代更新和其他 WSUS 維護項目的相關資訊,請參閱 Microsoft WSUS 和 Configuration Manager SUP 維護的完整指南一文。

具有 SSL 設定的 WSUS

預設情況下,WSUS 不會設定為使用 SSL 進行用戶端通訊。 安裝後的第一個步驟應該是在 WSUS 上設定 SSL,以確保伺服器與用戶端通訊之間的安全性。

您必須可以執行下列其中一個動作:

  • 建立自我簽署憑證。 這並不理想,因為每個用戶端都必須信任此憑證。
  • 從協力廠商憑證提供者取得憑證。
  • 從內部憑證基礎結構取得憑證基礎結構。

您的憑證必須具有其所使用的簡短的伺服器名稱、FQDN 和 SAN 名稱 (別名)。

安裝憑證之後,請升級 Configuration Manager 中軟體更新的群組原則 (或用戶端組態設定),以使用 WSUS 伺服器的位址和 SSL 埠。 埠通常是 8531 或 443。

例如,將 GPO 指定內部網路Microsoft將服務位置 更新為 <https://wsus.contoso.com:8531>。

若要開始使用,請參閱 使用安全通訊端層通訊協定保護 WSUS

設定防毒軟體排除項目

關於累積更新和每月彙總套件

您可能會看到用於 Windows OS 更新的每月彙總套件累積更新一詞。 它們可以交替使用。 彙總套件指的是針對 Windows 7、Windows 8.1、Windows Server 2008 R2 和 Windows Server 2012 R2 發佈的更新,這些更新僅部分累積。

如需詳細資訊,請參閱下列部落格貼文:

從 Windows 10 和 Windows Server 2016,更新會從頭開始累積:

累積表示:您會安裝作業系統的發行版本,而且只需要套用最新的累積更新才能完全修補。 對於較舊的作業系統,雖然這是我們的方向,但我們還沒有這類更新。

針對 Windows 7 和 Windows 8.1,這表示在您安裝最新的每月彙總套件之後,仍然需要更多更新。 以下是 Windows 7 和 Windows Server 2008 R2 的範例,其中包含幾乎完全修補的系統。

下表包含 Windows 每月彙總套件和累積更新的清單。 您也可以搜尋 Windows <版本> 更新歷程記錄來尋找它們。

Windows 版本 更新
Windows 7 SP1 和 Windows Server 2008 R2 SP1 Windows 7 SP1 和 Windows Server 2008 R2 SP1 更新記錄
Windows 8.1 與 Windows Server 2012 R2 Windows 8.1 和 Windows Server 2012 R2 更新記錄
Windows 10 與 Windows Server 2016 Windows 10 和 Windows Server 更新歷程記錄
Windows Server 2019 Windows 10 和 Windows Server 2019 更新歷程記錄

另一個要考慮的重點是,並非所有更新都會發佈,因此會自動同步至 WSUS。 例如, CD 周累積更新是預覽更新,不會同步至 WSUS,但必須改為手動匯入。 請參閱 Windows 10 更新服務頻率每月品質更新一節。

使用 PowerShell 連線到 WSUS 伺服器

以下是讓您開始使用 PowerShell 和 WSUS API 的程式碼範例。 它可以在安裝 WSUS 管理主控台的位置執行。

[void][reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration")
$WSUSServer = 'WSUS'
# This is your WSUS Server Name
$Port = 8530
# This is 8531 when SSL is enabled
$UseSSL = $False
#This is $True when SSL is enabled
Try
{
    $Wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer($WSUSServer,$UseSSL,$Port)
}
Catch
{
    Write-Warning "$($WSUSServer)<$($Port)>: $($_)"
    Break
}

參考資料