共用方式為


BizTalk Server 如何實作主控件節流

BizTalk Server主機節流機制會持續監視節流條件、計算節流條件的嚴重性,並根據計算的嚴重性逐漸套用主機節流。 節流機制是自我調整,而預設組態選項適用于大部分的BizTalk Server處理案例。 BizTalk Server主機節流會公開數個可設定的選項,可用來調整特定案例的節流。 如需變更這些組態選項的相關資訊,請參閱 如何修改主機設定

主控件節流演算法的元件

BizTalk Server套用主機節流時,會使用下列演算法:

  1. 持續監控下列參數,以查看其是否超過特定的閾值。 若參數值超過參數的閾值,則節流狀況就會存在。

    • 使用中的記憶體數量 (全系統與主控件程序記憶體)。

    • 已傳遞或已處理之內含式訊息的數目 (輸出節流的閾值)。

    • 使用中的執行緒數目。

    • 資料庫大小,以所有主控件之佇列表格中的項目個數及多工緩衝處理與追蹤表格中的項目個數來計量。

    • 並行資料庫連線的數目。

    • 訊息發佈 (輸入) 與傳遞或處理 (輸出) 的速率。

  2. 決定節流狀況的嚴重性。 節流狀況會以下列方式來區分嚴重性層級 (從最嚴重到最不嚴重)。

    • 使用中的主控件程序記憶體超過閾值。

    • 內含式訊息數目超過閾值。

    • 使用中的執行緒計數超過閾值。

    • 資料庫大小超過閾值。

    • 所有其他節流狀況。

  3. 依節流狀況的嚴重性逐步套用節流。 當嚴重性層級增加時,可以更積極地套用節流。 漸進式節流可以下列方式來達成:

    • 偵測到一或多個節流狀況並指派其嚴重性。

    • 根據嚴重性層級最高的狀況發出實作節流的指示。 根據節流狀況,若此狀況持續存在,則各種執行緒集區的大小可能會減少,並藉由凍結執行中的協調流程來釋放記憶體。

    • 根據訊息為輸入或輸出訊息,以決定要在發佈或處理訊息時套用延遲。 延遲期間會與節流狀況的嚴重性成正比,因此,層級較高的嚴重性節流狀況將比層級較低的嚴重性節流狀況初始化更長的節流期間。 透過狀況變更時的節流機制,這個延遲期間可在特定範圍內上下調整。 目前的延遲期間是透過 訊息傳遞延遲 (ms) ,而訊息 發佈延遲 (ms) BizTalk:Message Agent 效能物件類別相關聯的效能計數器。 這些效能物件計數器記載于 主機節流效能計數器主題中

    • 節流機制會繼續檢查節流狀況是否存在。 若節流狀況已移轉,則會解除封鎖已節流的訊息,並允許執行緒集區與其他資源在不受限制的模式下運作。 若系統繼續操作且沒有任何節流狀況,則延遲期間會大為降低。 若節流狀況持續存在,則延遲數量會漸增且與狀況的嚴重性成正比,而後續訊息會受到更高的延遲。

    • 當延遲期間過後,就不再實作節流。

節流狀況的類型

節流條件有三種主要類型:速率、資源型和協調流程。

  1. 速率型節流 分為兩個類別:輸入 (已發佈) 和輸出 (傳遞) :

    • 針對發行) 訊息的輸入 (,如果主機實例的訊息發佈傳入速率超過訊息發佈速率\* 指定的速率超驅因素, (%) 值,則BizTalk Server節流發佈訊息。 [訊息發佈節流設定] 對話方塊上可設定速率超驅因素 (百分比) 參數。 輸入訊息之根據速率的節流,主要是藉由在將訊息批次發佈至 MessageBox 資料庫之前引發延遲來完成。 不必採取其他動作,就能完成輸入訊息之根據速率的節流。

    • 對於傳遞) 訊息的輸出 (BizTalk Server,如果主機實例的訊息傳遞速率超過訊息傳遞速率 * 指定的速率超驅因素 (百分比) 值,則會節流傳遞訊息。 [訊息處理節流設定] 對話方塊上可設定速率超驅因素 (百分比) 參數。 輸出訊息之根據速率的節流,主要是藉由在從記憶體中佇列移除訊息並將訊息傳遞至「結束點管理員」(EPM) 或協調流程引擎以進行處理之前,引發延遲來完成。 不必採取其他動作,就能完成輸出訊息之根據速率的節流。

      如需速率超驅因素和其他速率型節流值的詳細資訊,請參閱 如何修改速率型節流設定

  2. 以資源為基礎的節流 會監視系統資源,例如執行緒、記憶體和資料庫大小,並可套用至任何服務類別。 如需資源型節流值的詳細資訊,請參閱 如何修改以資源為基礎的節流設定

  3. 協調流程節流 可防止凍結,以及暫停/繼續訂用帳戶的時機。 如需協調流程節流值的詳細資訊,請參閱 如何修改協調流程節流設定

節流狀況觸發程序、動作,以及移轉策略

本節描述各種節流狀況的觸發程序、節流機制所產生的動作,以及可用來移轉節流狀況的技術。

輸入節流

BizTalk 節流機制會將輸入節流套用至協調流程引擎 (XLANG) 與輸入配接器。

使用與BizTalk:MessageAgent效能物件類別相關聯的訊息發佈節流狀態和訊息發佈節流狀態計數器,測量目前的節流狀態和節流持續時間。 如需可用主機節流效能計數器的詳細資訊,請參閱 主機節流效能計數器

輸入節流會造成輸入訊息積存於來源中。 若輸入節流是套用至接收配接器,則接收配接器可能會停止接收訊息,直到移轉了節流狀況為止。

訊息發佈

節流狀態
節流條件的觸發程序 採取的節流動作 移轉策略 效能物件 效能計數器
2 主機實例的訊息發佈傳入速率超過訊息發佈傳出速率\* 指定的速率超驅因素 (百分比) 值。 資料庫無法趕上發佈速率。 封鎖動態計算時間週期的發佈執行緒,直到 訊息發佈傳入速率訊息發佈傳出速率 相同 * 指定的 速率超驅因素 (百分比) 值。 使用效能計數器,來決定訊息發佈內送與訊息發佈外寄速率。 考慮適合您環境的增加因素。

確認針對 取樣視窗持續時間樣本參數數目下限 所提供的值適用于您的案例。

如需這些參數的詳細資訊,請參閱 如何修改速率型節流設定
BizTalk:MessageAgent 訊息發佈內送速率

訊息發佈外寄速率
4 程序記憶體超過指定的閾值。

若要發佈的批次擁有遽增的記憶體需求或是太多執行緒正在處理訊息,就會發生此狀況
縮減 EPM 所使用的執行緒集區大小。

封鎖 EPM 執行緒,以防止處理新訊息批次。

若有遽增的記憶體需求使批次中的訊息持續存在於資料庫中,則在訊息持續存在於資料庫中之前,發佈執行緒也會受到漸進式延遲。

由於程序記憶體壓力而是否要封鎖發佈批次,則取決於幾個因數,包括批次中的訊息數目,或是批次中是否有凍結或訊息刪除命令。
考慮藉由縮減 EPM 執行緒集區和 (或) 配接器批次的大小,來降低負載的數量。

如果進程未耗用過多的記憶體,請考慮增加主機的進程 虛擬 閾值。

如需變更 進程虛擬 值的詳細資訊,請參閱 如何修改以資源為基礎的節流設定
BizTalk:MessageAgent 高程序記憶體

程序記憶體使用量 (MB)

程序記憶體使用量閾值 (MB)
6 主控件訊息佇列大小、多工緩衝處理表格大小或追蹤表格大小超過指定的閾值。

此狀況的可能原因包括:

- BizTalk Server用來維護未執行或執行緩慢之BizTalk Server資料庫的 SQL Agent 作業。
- 下流元件不會及時處理來自記憶體內部佇列的訊息。
- 暫停的郵件數目很高。
- 已達到系統的永續性負載上限。
縮減 EPM 所使用的執行緒集區大小。

封鎖 EPM 執行緒,以防止處理新訊息批次。

在訊息持續存在於資料庫之前,發佈執行緒也會受到漸進式延遲。
確定 BizTalk Server 用來維持 BizTalk Server 資料庫執行或不失敗的 SQL 代理程式工作。

視需要終止和繼續已擱置的執行個體。

將裝載 BizTalk 資料庫的 SQL Server 空間需求納入考慮,在 資料庫閾值中增加訊息計數 的預設值。

如果您的資料庫大小適當地處理其他訊息待處理專案,請考慮增加 多工緩衝處理乘數追蹤資料乘 數值,以允許多工緩衝處理和追蹤資料表中的其他待處理專案。

如需變更值的詳細資訊,請參閱 如何修改以資源為基礎的節流設定
BizTalk:MessageAgent

BizTalk:Message Box:一般計數器

BizTalk:Message Box:主控件計數器
MessageAgent /資料庫大小

Message Box:一般計數器/多緩衝處理大小

Message Box:一般計數器/追蹤資料大小

Message Box:主控件計數器/主控件佇列 – 長度

Message Box:主控件計數器/主控件佇列 - 已擱置的訊息 – 長度
8 主控件執行個體所使用的資料庫工作階段超過指定的閾值。 縮減 EPM 所使用的執行緒集區大小。

封鎖 EPM 執行緒,以防止處理新訊息批次。

在訊息持續存在於資料庫之前,發佈執行緒也會受到漸進式延遲。
請考慮增加主機的資料庫 連線 閾值。

如需變更此值的詳細資訊,請參閱 如何修改以資源為基礎的節流設定
BizTalk:MessageAgent 資料庫工作階段
9 處理程序執行緒計數超過指定的閾值。 縮減 EPM 所使用的執行緒集區大小。

封鎖 EPM 執行緒,以防止處理新訊息批次。

在訊息持續存在於資料庫之前,發佈執行緒也會受到漸進式延遲。
考慮調整不同的執行緒集區大小,以確定系統不會建立大量的執行緒。

如需修改執行緒集區大小的詳細資訊,請參閱 如何修改一般設定如何修改以資源為基礎的節流設定
BizTalk:MessageAgent 執行緒計數

執行緒計數閾值
5 系統記憶體超過指定的閾值。 縮減 EPM 所使用的執行緒集區大小。

封鎖 EPM 執行緒,以防止處理新訊息批次。

若有遽增的記憶體需求使批次中的訊息持續存在於資料庫中,則在訊息持續存在於資料庫中之前,發佈執行緒也會受到漸進式延遲。

由於程序記憶體壓力而是否要封鎖發佈批次,則取決於幾個因數,包括批次中的訊息數目,或是批次中是否有凍結或訊息刪除命令。
考慮藉由縮減 EPM 執行緒集區和/或配接器批次大小,來降低負載。

如果進程未耗用過多的記憶體,請考慮增加主機的 全域實體 閾值。

如需變更 全域實體 閾值的詳細資訊,請參閱 如何修改以資源為基礎的節流設定
BizTalk:MessageAgent 實體記憶體使用量 (MB)

實體記憶體使用量閾值 (MB)

輸出節流

BizTalk 節流機制會將輸出節流套用至協調流程引擎 (XLANG) 與輸出配接器。

使用與BizTalk:MessageAgent效能物件類別相關聯的訊息傳遞節流狀態計數器和訊息傳遞節流狀態計數器,測量目前的節流狀態和節流持續時間。 如需可用主機節流效能計數器的詳細資訊,請參閱 主機節流效能計數器

輸出節流會造成訊息延遲傳遞,而且訊息可能建立在記憶體中佇列內,並造成清除佇列執行緒遭到封鎖,直到移轉了節流狀況為止。 在清除佇列執行緒被封鎖時,不會從 MessageBox 將額外的訊息提取至記憶體中佇列內以進行輸出傳遞。

訊息傳遞

節流狀態
節流條件的觸發程序 採取的節流動作 移轉策略 效能物件 效能計數器
1 主機實例的訊息傳遞傳入速率超過訊息傳遞傳出率 \* 指定的速率超驅因素 (百分比)

可能的原因包括高處理複雜性、慢速輸出配接器,或暫時性系統資源不足。
封鎖動態計算時間週期的傳遞執行緒,直到訊息傳遞傳入速率與 訊息傳遞傳出速率 \* 指定的 速率超驅因素 (百分比) 值。 使用效能計數器,來決定訊息傳遞內送與訊息傳遞外寄速率。 考慮適合您環境的增加因素。

確認針對 [取樣] 視窗持續時間[樣本數目下限] 參數所提供的值適用于您的案例。

如需這些參數的詳細資訊,請參閱 如何修改速率型節流設定
BizTalk:MessageAgent 訊息傳遞內送速率

訊息發佈外寄速率
4 程序記憶體超過指定的閾值。

這可能發生於記憶體耗用處理實例中、處理大型訊息時,或是傳送配接器嘗試同時處理大量訊息時。
降低訊息傳遞至配接器或 XLANG 的速度。

若適用,可藉由凍結服務執行個體與壓縮快取,來縮減處理程序記憶體消耗。

縮減 EPM 和/或訊息代理程式所使用的執行緒集區大小。

定期強制 .NET 記憶體回收 (GC)。
若系統並未因根據以程序記憶體為主的節流而成為閒置,則可能不需要其他動作。

如果 進程內訊息計數 計數器很高,而且即使有進程記憶體型節流,CPU 使用率也不會過多,則不需要採取任何其他動作。

如果系統似乎過度節流,請考慮增加與主機 進程虛擬 閾值相關聯的值,並確認主機實例不會產生「記憶體不足」錯誤。 如果增加 進程虛擬 閾值而引發「記憶體不足」錯誤,請考慮減少 內部訊息佇列大小進程內訊息 閾值的值。 此策略特別會與大型訊息處理實例有關。

如需這些參數的詳細資訊,請參閱 如何修改以資源為基礎的節流設定
BizTalk:MessageAgent 高程序記憶體

(MB) 處理記憶體使用量

程序記憶體使用量閾值 (MB)

內含式訊息計數

作用中執行個體計數
3 已傳遞之內含式訊息的數目超過指定的閾值。

可能的原因包括高處理複雜性、慢速輸出配接器,或暫時性系統資源不足。
降低訊息傳遞至配接器或 XLANG 的速度。

縮減訊息代理程式所使用的執行緒集區大小。
如果發生過度節流,請考慮增加與 同進程訊息 閾值相關聯的值。

如需此參數的詳細資訊,請參閱 如何修改以資源為基礎的節流設定附注: 增加此值可能會對傳送配接器效能造成負面影響,以及/或增加進程的記憶體使用量。
BizTalk:MessageAgent 內含式訊息計數

內含式訊息計數閾值
9 處理程序執行緒計數超過指定的閾值。 縮減 EPM 和 (或) 訊息代理程式所使用的執行緒集區大小。 考慮調整不同的執行緒集區大小,以確定系統不會建立大量的執行緒。

如需修改執行緒集區大小的詳細資訊,請參閱 如何修改一般設定如何修改以資源為基礎的節流設定
BizTalk:MessageAgent 執行緒計數

執行緒計數閾值
5 系統記憶體超過閾值。 降低訊息傳遞至配接器或 XLANG 的速度。

若適用,可藉由凍結服務執行個體與壓縮快取,來縮減處理程序記憶體消耗。

縮減 EPM 和/或訊息代理程式所使用的執行緒集區大小。
考慮藉由縮減 EPM 執行緒集區和/或配接器批次大小,來降低負載。

如果進程未耗用過多的記憶體,請考慮增加主機的 全域實體 閾值。

如需變更 全域實體 閾值的詳細資訊,請參閱 如何修改以資源為基礎的節流設定
BizTalk:MessageAgent 實體記憶體使用量 (MB)