何謂主控件節流?
大部分在 BizTalk Server 上執行的處理會在稱為 BizTalk Server 主控件執行個體的邏輯實體中發生,當做 Windows 服務或外掛式主控件程序在 BizTalk Server 上執行。 為管理主控件執行個體程序對資源的使用,BizTalk Server 會利用一種透過主控件執行個體管理訊息流程和處理的可調式節流機制。
此節流機制會節制主控件執行個體的工作負載,以確保工作負載不超過主控件執行個體或任何下游主控件執行個體的容量。 此節流機制也會防止爭用內容的情況,這種情況會降低主控件執行個體程序或其他系統程序的整體效能。 當一或多個程序耗用有限的資源,對本身和 (或) 其他程序造成損害時,就會發生爭用內容。 例如,過度使用記憶體或執行緒可能造成記憶體配置失敗或高度執行緒內容切換,有可能會影響程序效能。 類似這種爭用內容的情況可能對 BizTalk Server 的整體效能造成損害。
主控件節流機制還可偵測是否未充分使用可用的資源。 若未充分使用可用資源,節流機制會允許主控件執行個體處理額外訊息。 若可用資源處於過度使用或未充分使用的狀態,主控件節流機制會持續監控,並且透過主控件執行個體調整訊息流程。
BizTalk Server 主控件節流機制可協助確保系統在最佳且可承受的層級作業。
主控件節流組態參數是在 [BizTalk Server 管理] 主控台中,以每個主控件為基礎而設定的。 請注意,為主控件設定的節流組態參數,可以套用至儲存在對應主控件執行個體中的任何或所有接收處理常式、傳送處理常式或協調流程。 若您要設定只能套用至特定接收處理常式、傳送處理常式或協調流程的節流參數,則應該執行下列動作:
建立一個新的主控件並適當地設定節流參數。
設定要在此主控件中執行的接收處理常式、傳送處理常式或協調流程。
建立這個主控件的一或多個執行個體,以在您的 BizTalk Server 上執行。
輸入主控件節流
輸入主機節流也稱為BizTalk Server中的訊息發佈節流,會套用至包含將訊息發佈至 MessageBox 資料庫的接收介面卡或協調流程的主機實例。 輸入主控件節流情況會在下列情況下觸發:
記憶體數量、執行緒數目或主機實例所使用的資料庫連結數目超過 BizTalk 群組中可用 [設定儀表板] 中定義的節流閾值,然後選取 [設定]。 您可以使用 BizTalk:Message Agent 效能物件類別下可用的效能監視器計數器來測量這些值。
下游主控件無法處理已發佈的訊息。 這會增加 DB 參數中訊息計數 的值。 DB 值中訊息計數觸發節流條件的臨界值,可在 [設定儀表板] 的 [主機] 選項上設定。 資料庫中的訊息計數可以使用BizTalk:Message Agent效能物件類別下的Database Size計數器來測量。
主機實例的 訊息發佈傳入速率 超過 訊息發佈傳出速率\* 指定的 Rate overdrive 因數 值。 速率超驅因素值定義于 [設定儀表板]、[主機] 和 [速率型節流]。 在 BizTalk:Message Agent 效能物件類別下,可以使用對應的效能監視器計數器來測量發佈傳入和傳出速率的訊息。
已修改預設節流行為。 使用 [設定儀表板] BizTalk Server效能微調描述影響節流行為的不同值。
根據節流情況嚴重性的不同,會執行下列動作:
實作主控件執行個體處理邏輯中的漸進延遲。 當「結束點管理員」(EPM) 執行緒收到來自傳輸配接器的訊息批次時,和 (或) EPM 提交一個要發佈的訊息批次至 MessageBox 資料庫時,可能會實作延遲。 處理延遲的持續時間以及持續時間遞增的速率會隨著節流情況的嚴重性增加。
「結束點管理員」(EPM) 可使用的執行緒數目是有限制的。 EPM 接收來自配接器的訊息批次,並發佈訊息至 MessageBox 資料庫。 依照預設,EPM 設定為每一 CPU 使用 20 個執行緒。 若主控件節流機制偵測到輸入處理的負荷情況非常高,則會暫時減少 EPM 可用的執行緒數目,直到負荷情況已排除。 EPM 不能處理來自傳輸配接器的訊息或傳遞訊息批次到 MessageBox 資料庫,除非某個 EPM 執行緒可對輸入訊息批次提供服務。
當適用時,降低記憶體和其他資源的使用率。 BizTalk Server 可以傳送指示給其他服務類別,藉由凍結執行排程、縮小記憶體快取大小以及限制需要大量記憶體的執行緒之使用量,以限制記憶體使用率。
從配接器到 MessageBox 的輸入訊息流程
輸入訊息流程
輸出主控件節流
輸出主機節流也稱為BizTalk Server中的訊息處理節流,會套用至包含協調流程或傳送配接器的主機實例,這些實例會接收和傳遞或處理已發佈至 MessageBox 的訊息。 輸出主控件節流情況會在下列情況下觸發:
記憶體數量、執行緒數目或主機實例所使用的資料庫連結數目超過 [設定儀表板] 中以資源為基礎的節流中定義的節流閾值。 您可以使用 BizTalk:Message Agent 效能物件類別下可用的效能監視器計數器來測量這些值。
主機實例的 訊息傳遞傳入速率 超過 訊息傳遞傳出率 * 指定的 速率超驅因素 值。 速率超驅因素值是在 [設定儀表板] 中的 [速率型節流] 索引標籤上定義。 訊息傳遞傳入和傳出速率可以使用 BizTalk:Message Agent 效能物件類別目錄下的對應效能監視器計數器來測量。
主機實例同時處理的訊息數目超過 每個 CPU 的進程內訊息 * 方塊上可用的 CPU 數目。 [設定儀表板] 中的 [資源型節流] 索引標籤上定義了進程訊息閾值。 主機實例同時處理的訊息數目,可以使用BizTalk:Message Agent效能物件類別下的同進程訊息計數效能計數器來測量。
已修改預設節流行為。 使用 [設定儀表板] BizTalk Server效能微調描述影響節流行為的不同值。
根據節流情況嚴重性的不同,會執行下列動作:
在傳遞訊息到輸出傳輸配接器或用來處理訊息的協調流程引擎之前,會實作主控件執行個體處理邏輯中的漸進延遲。 處理延遲的持續時間以及持續時間遞增的速率會隨著節流情況的嚴重性增加。
記憶體中的佇列所能保存的訊息數目是有限制的。 記憶體中的佇列,是從 MessageBox 傳遞訊息到「訊息代理程式」,再從「訊息代理程式」傳遞訊息到 XLANG 與傳送配接器時的暫時預留位置。 依照預設,記憶體中的佇列設定為每一 CPU 保留 100 個訊息。 當佇列已滿時,除非釋放記憶體中的佇列,否則不會再從 MessageBox 清除訊息佇列。
「訊息代理程式」執行緒集區大小是有限制的。 藉由限制「訊息代理程式」執行緒集區的大小,主控件節流機制可有效降低傳遞至 XLANG 與配接器的訊息數量。
藉由變更 [設定儀表板] 中 [一般] 索引標籤上的[最大引擎執行緒] 值,即可修改預設的 Message Agent 執行緒集區大小。 如需修改此值的詳細資訊,請參閱 如何修改一般設定。
當適用時,降低記憶體和其他資源的使用率。 BizTalk Server 可以傳送指示給其他服務類別,藉由凍結執行排程、縮小記憶體快取大小以及限制需要大量記憶體的執行緒之使用量,以限制記憶體使用率。
從 MessageBox 到配接器與 XLANG 的輸出訊息流程