內容發佈的元件和線程
本文可協助您了解內容發佈的元件和線程。
原始產品版本: Configuration Manager 最新分支、Microsoft System Center 2012 Configuration Manager、Microsoft System Center 2012 R2 Configuration Manager
用於內容發佈的元件
以下是用於內容發佈的主要元件快速清單:
名稱 | 元件名稱 | 易記名稱 | 描述 |
---|---|---|---|
散發管理員 | SMS_DISTRIBUTION_MANAGER | DistMgr | 管理內容並建立 PkgXferMgr 的作業 |
套件傳輸管理員 | SMS_PACKAGE_TRANSFER_MANAGER | PkgXferMgr | 將套件傳輸至發佈點 |
階層管理員 | SMS_HIERARCHY_MANAGER | Hman | 處理和復寫站台階層的變更 |
Sender | SMS_SENDER | Sender | 跨 TCP/IP 網路起始月台間通訊 |
Despooler | SMS_DESPOOLER | Despooler | 處理來自父月臺或子月臺的傳入複寫檔案 |
排程器 | SMS_SCHEDULER | 排程器 | 建立傳送者作業 |
資料庫通知監視器 | SMS_DATABASE_NOTIFICATION_MONITOR | SmsDbMon | 監看資料庫是否有特定數據表的變更,並在負責處理這些變更的元件收件匣中建立檔案 |
SMS 提供者 | SMS 提供者 | SMSProv | 指派月臺 Configuration Manager 資料庫的讀取和寫入存取權的 Windows Management Instrumentation (WMI) 提供者 |
SMS DP 提供者 | SMS DP 提供者 | SMSDPProv | 管理 DP 上內容庫作業的 Windows Management Instrumentation (WMI) 提供者 |
SMS 代理程式主機 | SMS 代理程式主機 | CcmExec | SMS 代理程式主機是 Configuration Manager 用戶端代理程式服務,它也會裝載伺服器端元件,例如管理點和提取發佈點 |
數據傳輸服務 | DataTransferService | DTS | 數據傳輸服務是 CcmExec 的元件,負責透過 BITS 下載檔。 |
散發管理員 (DistMgr) 線程
發佈管理員 (DistMgr) 會執行各種作業,以將內容發佈至發佈點 (DP)。 這些作業是由不同類型的線程處理,下圖說明預設線程組態的 DistMgr 線程階層:
主要 DistMgr 線程
辨識的記錄項目:
SMS_EXECUTIVE started SMS_DISTRIBUTION_MANAGER as thread ID 3648 (0xE40)
此線程會在服務啟動時啟動
SMS_Executive
。 主要 DistMgr 線程會啟動復寫處理、DP 管理員、內容清理、DP 憑證監視、內容庫移動、IIS 組態變更處理、DP 重新指派,以及在啟動時升級處理線程。 當套件變更發生時,它也會視需要啟動封裝處理線程除了管理這些線程之外,此線程也會處理月臺控制檔案的變更,並更新 DP 設定(設定 DP/PXE、更新登錄設定、在 DP 上建立監視/使用工作等等)。
複寫處理線程
辨識的記錄項目:
Starting thread for processing replication, thread ID = 0x1A14 (6676)
此線程是由主要 DistMgr 線程啟動,
DistMgr.box\incoming
並處理目錄中的下列檔案:檔案 說明 .STA 更新資料庫中數據表中的 PkgStatus
套件狀態。.FWD 藉由建立要傳送封裝的迷你作業,將指定的套件轉送至指定的目的地月臺。 .DMD 散發隨選要求。 將指定的封裝目標設為指定的 DP。 .PUL 更新 DB 中數據表中的 PullDPResponse
提取 DP 套件回應。注意
此線程是單個線程,而且不會建立更多線程來處理這些檔案。
DP 管理員線程
辨識的記錄項目:
Starting the DP Manager thread, thread ID = 0x5D8 (1496)
此線程是由主要 DistMgr 線程啟動,並在偵測月臺控制檔案變更時處理移除 DP。 發生適當的網站控制檔案變更時,SMSDBMON 會卸除此線程所處理之
DistMgr.box
DPN (DP 通知) 檔案。DPN 檔案可用來通知 DP 變更,這牽涉到 DP 移除(由 Action = 3 在數據表中
DistributionPoints
偵測到)。注意
此線程是單個線程,而且不會建立更多線程來執行工作。
內容清除線程
辨識的記錄項目:
Starting the content cleanup thread, thread ID = 0x1604 (5636)
此線程由主要 DistMgr 線程啟動,並執行內容清除。 它會藉由偵測資料庫中的孤立內容來判斷是否需要內容清除。 此線程會針對可指示遠端 DP 一次刪除的內容,使用預設批次大小為 50。 不過,您可以藉由設定下列登錄機碼來覆寫此值:
SMS\Components\SMS_DISTRIBUTION_MANAGER\RemoteContentCleanupBatchSize
DWORD 值可以介於 1 到 500 之間。
注意
請勿在沒有諮詢Microsoft支援專業人員的情況下變更此值。 此線程是單個線程,而且不會建立更多線程來執行工作。
DP 憑證監視線程
辨識的記錄項目:
Starting the DP cert monitoring thread, thread ID = 0x7290 (29328)
此線程是由主要 DistMgr 線程啟動。 此線程會處理 。啟用增強的 HTTP 模式時,CER 檔案和在 IIS 中設定憑證系結。 此模式需要在 IIS 中使用 Configuration Manager 產生的憑證。
注意
此線程是單個線程,而且不會建立更多線程來執行工作。
內容庫移動線程
辨識的記錄項目:
Starting the content library move thread, thread ID = 0x11D6C (73068)
此線程由主要 DistMgr 線程啟動,並將內容庫移至 之後 的新位置。CML 檔案會在 中
DistMgr.box
卸除。注意
此線程是單個線程,而且不會建立更多線程來執行工作。
IIS 組態變更處理線程
辨識的記錄項目:
Starting the IIS config change processing thread, thread ID = 0x408C (16524)
此線程由主要 DistMgr 線程啟動,並處理在 中
DistMgr.box
卸除 IIS 檔案之後,為標準和提取發佈點設定 IIS 虛擬目錄。 此線程會IISConfigChangeThreadLimit
讀取元件的月臺控制檔案 (SCF) 屬性SMS_DISTRIBUTION_MANAGER
,以判斷可以同時執行 IIS 變更的線程數目。 SCF 屬性的IISConfigChangeThreadLimit
預設值為 50,但必要時可以變更。 不過,如果這個 SCF 屬性因某些原因而不存在,則會使用預設值 50。IISConfigChangeThreadLimit
注意
此線程會建立更多線程來執行 DP IIS 組態變更。 每個背景工作線程都會處理特定 DP 的 IIS 虛擬目錄組態。
DP 重新指派線程
辨識的記錄項目:
Starting the shared DP reassignment thread, thread ID = 0x9C0C (39948)
此線程由主要 DistMgr 線程啟動,並在 時處理標準和提取發佈點的 DP 重新指派。DPU 檔案會在 中
DistMgr.box
卸除。 此線程會SharedDPImportThreadLimit
讀取元件的月臺控制檔案 (SCF) 屬性SMS_DISTRIBUTION_MANAGER
,以判斷可以同時執行 DP 重新指派的線程數目。 SCF 屬性的SharedDPImportThreadLimit
預設值為 50,但必要時可以變更。 不過,如果這個 SCF 屬性因某些原因而不存在,則會使用預設值 50。SharedDPImportThreadLimit
注意
此線程會建立更多線程來執行 DP 重新指派。 每個背景工作線程都會處理特定 DP 的重新指派。
升級處理線程
辨識的記錄項目:
Starting the DP upgrade processing thread, thread ID = 0x1968 (6504)
此線程由主要 DistMgr 線程啟動,並處理標準和提取發佈點的 DP 安裝和升級。 它會呼叫
spGetDPsForUpgrade
以取得需要升級的 DP 清單。 此線程會DPUpgradeThreadLimit
讀取元件的月臺控制檔案 (SCF) 屬性SMS_DISTRIBUTION_MANAGER
,以判斷可以同時執行 DP 安裝/升級的線程數目。 SCF 屬性的DPUpgradeThreadLimit
預設值為 50,但必要時可以變更。 不過,如果這個 SCF 屬性因某些原因而不存在,則會使用預設值 5。DPUpgradeThreadLimit
注意
此線程會建立更多線程來執行 DP 安裝/升級工作。 每個背景工作線程都會處理特定 DP 的安裝/升級。
封裝處理線程
辨識的記錄項目:
Started package processing thread for package 'PKGID', thread ID = 0x8E8 (2280)
這些線程是由主要 DistMgr 線程啟動。 封裝處理線程的數目取決於軟體發佈元件組態屬性中的套件線程數目上限設定。 每個封裝處理線程都會執行封裝內容的哈希,並建立內容的壓縮複本。
注意
雖然所有封裝處理線程都會同時執行,但它們負責哈希和壓縮封裝來源。 壓縮周圍有重要區段,這表示一次只能壓縮一個線程。 如果建立並散發一堆新的大型套件,則每個套件線程可以在鏈結中封鎖,等待其回合取得壓縮鎖定。
根據套件動作 (新增/更新/刪除),每個封裝處理線程也會建立:
- DP 線程,用來建立套件傳輸管理員作業,以在 DP 上新增/更新內容。
- DP 線程指示遠端發佈點從內容庫移除內容。
每個封裝處理線程可以建立的 DP 線程數目取決於軟體發佈元件組態屬性中的 [每個套件的線程上限] 設定。
注意
封裝處理線程是多線程,而且每個封裝處理線程都會建立更多線程來執行工作。 每個背景工作線程都會處理 DPS 的新增/更新/移除作業。
散發管理員線程設定
所有 Configuration Manager 月臺(包括管理中心網站)都允許設定可用於將內容發佈至發佈點的線程數目。 此設定專屬於每個月臺,且可透過以滑鼠右鍵按兩下 [月臺] 節點下的月臺,然後選取 [設定月臺元件>軟體發佈] 來存取。 以下是預設群組態:
在大部分情況下,您只會關注每個套件設定的套件數目上限和線程數目上限。
- 套件數目上限:指定 ConfigMgr 可以同時傳送至 DP 的套件數目上限。 指定的值應該介於 1 到 50 之間。
- 每個套件的線程數目上限:指定在散發期間指派給每個封裝的線程數目上限。 指定的值應介於 1 到 999 之間。
每個 package=5 的最大線程數目和每個 package=5 的最大線程數目的預設組態也可以參考 3x5。 這就是工作流程中通常表示線程設定的方式。
這真的意味著什麼
對散發管理員的影響 (DistMgr)
使用 3x5 的預設線程元件,DistMgr 可以同時處理三個套件,並針對每個套件使用最多五個線程,讓它最多使用 15 個線程來執行工作。 以下是假設我們有三個以上的套件需要散發到超過 5 個 DP 時,這會中斷:
若要處理每個個別套件,主要 DistMgr 線程會繁衍封裝處理線程。 此封裝處理線程會從 套件數目 上限設定使用三個封裝處理位置中的一個。 每個套件都有唯一的封裝處理線程 - DistMgr 不會針對同一個套件啟動多個封裝處理線程。 這表示三個唯一套件會利用三個唯一的封裝處理線程。 每個封裝處理線程最多可以繁衍五個 DP 線程,以同時將封裝散發至五個 DP。
對套件傳輸管理員的影響 (PkgXferMgr)
針對 DistMgr 所建立的每個 PkgXferMgr 作業,PkgXferMgr 會使用一個線程。 3x5 的線程組態表示 PkgXferMgr 的傳送容量設定為 15,這表示 PkgXferMgr 無法同時處理超過 15 個作業,將它限制為最多 15 個線程。
線程執行的時間長度
DistMgr 線程
DP 線程的目的是建立套件傳輸管理員的作業,然後執行實際的內容複製到 DP。 DP 線程在建立 PkgXferMgr 作業之後完成,因此 DP 線程的存留期很短。 由於這種性質,大部分時間都不需要設定積極的線程設定來加速內容發佈。 不要設定積極的值,而是查看 選擇正確的值 (下方的詳細資訊)。
PkgXferMgr 線程
對於標準 DP,因為 PkgXferMgr 線程會執行傳送內容的實際工作,因此這些線程的存留期取決於套件的大小。 針對較大的套件,這些線程可能需要很長的時間,視套件大小和網路速度而定。 雖然這些線程可能需要很長的時間才能完成,但 DistMgr 線程的存留期要短得多,這表示 DistMgr 可以將大量作業排入 PkgXferMgr 佇列,以在佇列中建立待辦工作。
針對提取 DP,PkgXferMgr 線程會通知提取 DP,要求提取 DP 下載內容。 因此,提取 DP 的 PkgXferMgr 線程存留期很短。 PkgXferMgr 會啟動另一個線程來執行提取 DP 輪詢(根據設定的輪詢間隔),以檢查作業的進度。 不過,這也是快速作業,而且這些線程的存留期也很短。
選擇正確的值
若要判斷這些設定的適當值,您必須先瞭解 Configuration Manager 階層。 讓我們考慮下列假設的 Configuration Manager 環境:
- 管理中心網站:CS1
- 主要月臺:PS1
- 向 PS1 回報的一般發佈點數目:200
- 套件總數:1000
在此環境中,預設線程組態 (3x5) 表示,如果新的套件需要散發到所有 200 個 DP,我們一次只會處理 5 個 DP。 一旦 DP 線程結束時,另一個 DP 線程就會繁衍,而且進程會繼續執行,直到處理所有 DP 為止。 此程式需要一些時間才能循環處理所有 200 個 IP。
若要將此優化,我們必須先詢問幾個問題:
- 您預計平均會同時新增/更新/散發多少套件?
- 您在網站中有多少個 DP? 月臺伺服器與這些 DPS 之間的網路設定如何?
假設第一個問題的答案是 5,而第二個問題的答案是 200 且網路連線良好,理論上您可以將套件數目上限設定為 5,而每個套件的最大線程數目為 200,讓 Configuration Manager 可同時將最多 5 個套件傳送至所有 200 個 DP。 不過,這表示當負載超過平均負載時,我們最多可以建立1000個線程,也就是許多線程。 更多線程通常很好,但並非總是因為正在執行的工作也依賴硬體和網路組態。 太多線程有時會造成瓶頸並降低速度,而不是加以改善。
設定這些設定時要記住的最重要事項是 尋找平衡點。 針對上述範例,合理的選項是將線程組態設定設定為 5x100 (甚至視硬體/網路而定,甚至 5x50 ),這仍然允許 Configuration Manager 針對五個不同的套件同時處理最多 100 個 DP。 使用這些設定,在高負載期間可以繁衍的線程數目上限不會超過 500。
注意
一般指導方針建議線程總數不超過 750。 這表示您可以將線程設定設為 3x250、5x150、10x75 等等。
在相同的階層中,您可能會遇到您在環境中引進新 DP 的情況,而且您需要將所有 1000 個套件散發至 DP。 在此情況下,5x100 的線程設定不會生效,因為我們一次只能處理 5 個套件,而處理 1000 個套件需要相當長的時間。 在此案例中,您可以選擇:
- 暫時將線程組態設定為 更適合目前需求的 50x10 ,但在長期執行中,考慮到我們有 200 個 DP,則不是很好的選項。
- 將線程組態永久設定為 20x25 之類的專案,可提供更好的平衡,並在更多套件需要移至少數 DP 的案例中提供類似的效能,以及少數套件需要移至許多 DP 的案例。
重要
線程設定的值沒有設定建議;它會因每個環境而有所不同,而且在瞭解您的環境和需求之後應該設定。 一定要記得 找到平衡點!
傳送者線程設定
每個 Configuration Manager 月臺(包括管理中心網站和次要月臺)都有一個傳送者。 傳送者會管理從一個網站到目的地網站的網路連線,並可以同時建立和多個網站間的連線。 為了連線至網站,傳送者會使用至該網站的檔案複寫路由,以識別用來建立網路連線的帳戶。 寄件者也會使用此帳戶將數據寫入目的地網站的 SMS_SITE
共用。
根據預設,傳送者會使用多個並行線程將數據寫入目的地網站。 每個並行線程都可以將不同的檔案型物件傳送至目的地月臺。 根據預設,當傳送者開始傳送物件時,它會繼續寫入該對象的數據區塊,直到傳送整個對象為止。
所有 Configuration Manager 月臺都可讓您設定傳送者元件可用來同時將數據傳送至其他月台的線程數目。 此設定專屬於每個月臺,並可選取 [發件者] 索引標籤,從 [月臺] 節點下的 [月臺內容] 存取。以下是預設群組態:
所有網站:此寄件者允許的同時通訊數目上限。 預設值為 5。 這些通訊可以針對不同網站或相同網站的所有,但受限於每個網站中指定的最大值。
每個月臺:允許任何單一目的地月臺同時通訊的最大數目。 預設值是 3。
注意
設定與其他站台通訊時要使用的並行傳送線程總數時,應該將傳送線程總數設定為大於針對每個月臺設定所設定的線程數目。 如果傳送線程總數等於設定為針對每個月臺使用的數目,且接收月臺無法使用,可能會導致所有傳送線程在嘗試與無法使用的網站通訊時使用,並防止站對站與其他月台進行月臺通訊。
這表示什麼意思
[所有網站] 下指定的值會定義 Sender 可用來同時將數據傳送至其他網站的線程總數。 除了 [所有月臺] 的線程總數外,您可以在 [每個月臺] 下分配可用於將數據傳送至任何一個目的地月臺的線程數目上限。 根據預設,每個月臺都會設定為使用五個並行線程,其中三個可在將數據傳送至任何一個目的地月臺時使用。 當您增加此數目時,您可以啟用 Configuration Manager 同時傳輸更多檔案,以增加月臺之間的數據輸送量。 不過,增加數量也會增加對網站間網路頻寬的需求。
選擇正確的值
若要判斷這些設定的適當值,您必須先瞭解 Configuration Manager 階層。 讓我們考慮下列假設的 Configuration Manager 環境:
- 管理中心網站:CS1
- 主要月臺:PS1
- 主要月臺:PS2
- 主要月臺:PS3
- 主要月臺:PS4
在此環境中,預設的傳送者線程組態將允許使用總共 5 個線程。 在這些 5 個線程中,3 可用於 4 個目的地主要站台中的任何一個。 如果系統管理員將 3 個傳送至所有這些網站,傳送者最後可能會針對其中一個月臺使用三個線程(例如 PS1),只留下其餘月臺的 2 個線程。 在剩餘的 2 個線程中,傳送者可以使用 1 作為 PS2,而另一個則用於 PS3,利用所有五個允許的線程不會同時將數據傳送至 PS4。 此時,Sender 必須等候其中一個現有的 5 個線程完成,才能傳送更多數據。 一旦現有的線程完成,傳送者就可以使用另一個線程將更多數據傳送至 PS2/PS3/PS4 網站。
建議為傳送者將與其通訊的每個網站保留 10 個線程。 在此情況下,CS1 網站可以與其他四個網站通訊,這表示四個網站的 [每一網站] 值為 10 需要將 [所有網站] 值設定為 40。
注意
這是一般建議,這些值可能需要進一步調整,視網站同時傳送至其他網站所需的套件數目而定。
帶寬控制和線程
在 Configuration Manager 中,您可以設定排程並設定遠端發佈點的特定節流設定,以及月臺的檔案復寫路由。 排程和節流至遠端發佈點的控件與標準寄件者地址的設定類似,但在此情況下,元件會使用稱為「套件傳輸管理員」的設定。
針對套件傳輸管理員元件(適用於月臺伺服器 - >DP),節流設定是在不在月台伺服器上之標準發佈點的屬性中設定。
針對寄件者元件 (針對月臺伺服器<->站臺伺服器),節流設定會設定在 [階層組態>檔復寫] 底下的檔案復寫路由屬性中。
注意
時間設定是以傳送月臺的時區為基礎,而不是發佈點。
排程選項
若要限制數據,請選取時間週期,然後選取下列其中一個設定來取得可用性:
針對所有優先順序開啟:指定 Configuration Manager 將數據傳送至發佈點,但沒有任何限制。
允許中高優先順序:指定 Configuration Manager 只會將中高優先順序數據傳送至發佈點。
僅允許高優先順序:指定 Configuration Manager 只會將高優先順序數據傳送至發佈點。
已關閉:指定 Configuration Manager 不會將任何數據傳送至發佈點。
您可以依優先順序限制數據,或關閉所選時段的連線。
速率限制選項
這可用來設定速率限制,以控制將內容傳輸至發佈點時所使用的網路頻寬。 您可以選擇下列選項:
- 傳送至此目的地時無限制:指定 Configuration Manager 將內容傳送至發佈點,且沒有速率限制。
- 脈衝模式:指定傳送至發佈點的數據區塊大小。 您也可以指定傳送每個資料區塊之間的時間延遲。 當您必須透過低頻寬網路連線將數據傳送至發佈點時,請使用此選項。 例如,您可能會有條件約束每五秒傳送 1 KB 的數據,不論連結的速度或其使用方式在指定時間。
- 限制為依小時指定的傳輸速率上限:指定此設定,只使用您設定的時間百分比,讓月臺將數據傳送至發佈點。 當您使用此選項時,Configuration Manager 不會識別網路可用的頻寬,而是會將數據傳送到時間配量中分割。 然後數據會傳送短時間區塊,接著是未傳送數據的時間區塊。 例如,如果最大速率設定為50%,Configuration Manager 會在一段時間內傳輸數據,後面接著沒有傳送任何數據的相等時段。 不會管理實際資料量大小 (或資料區塊大小)。 只會管理傳送資料的時間長度。
如需這些設定的詳細資訊,請參閱 在 Configuration Manager 中設定內容管理。
這如何影響 Sender 和 PkgXferMgr 線程
為月台啟用頻寬控制時,傳送者元件會忽略月臺的 Sender 線程設定,而且只會使用該月臺的一個線程。 同樣地,當 DP 啟用頻寬控制時,PkgXferMgr 會忽略線程組態,而且只會針對 DP 使用一個線程。
注意
即使 [限制可用带寬 ] 設定 為 100%,也是如此。
當頻寬控制生效時, PkgXferMgr.log 會記錄下列其中一行:
排程:
~位址至 DPNAME.CONTOSO.COM 目前處於带寬控制之下,因此只允許一個連線,將傳送要求傳回至集區。
脈衝模式:
~addres to DPNAME.CONTOSO.COM 目前處於脈衝模式,因此只允許一個連線。
~放棄傳送要求,因為脈衝模式中只允許一個連線。
設定頻寬節流時,Sender.log會顯示類似的專案。