共用方式為


如何識別 MessageBox 資料庫中的瓶頸

若要識別 MessageBox 資料庫中的瓶頸,請先確認 SQL Server Agent 服務已啟動。 將服務啟動狀態從 [手動] 變更為 [自動],讓伺服器重新開機時,服務會自動重新開機。

根據預設,如果 Spool、TrackingData 或 ApplicationQ 資料表成長,BizTalk 服務將會進行節流。 這些資料表會由 SQL-Agent 作業剪除,如果未執行,會導致多工緩衝處理增加,導致節流啟動和保護資料庫免于額外的壓力。 請檢查下列效能計數器的狀態:

多工緩衝處理資料表成長

Spool 會開始成長,可能有多種原因。 多工緩衝處理成長的其中一個原因是應用程式佇列成長。 它們可能會因為下游瓶頸和/或資源爭用等原因而成長。

如果應用程式佇列很小,且多工緩衝處理仍然很大,請確認清除作業是否持續運作。 確定 SQL Agent 服務正在執行,再檢查下列工作是否順利完成:

  • MessageBox_Message_Cleanup_BizTalkMessageBoxDb

  • MessageBox_Parts_Cleanup_BizTalkMessageBoxDb

    如果 MessageZeroSum 資料表很大,表示已處理訊息。 這表示 DeQueue 已成功從應用程式佇列資料表完成和刪除資料,且資料列已標示為要刪除。 然而,清除工作無法趕上刪除資料的速度。 如果執行SQL Server的電腦遇到嚴重的 CPU 競爭,會影響清除作業因 CPU 耗盡而保持運作的能力,就會發生這種情況。

應用程式佇列資料表成長

應用程式佇列裝載進行中的轉換資料,一旦處理之後,DeQueue 就會清除。

處理這些訊息之後,可以清除保留這些資料列參考 (多工緩衝處理資料表) 。

例如,RxHostQ 會將資料發佈至協調流程 PxHostQ。 此佇列會將資料發佈至傳送的 TxHostQ,每個都參考 Spool 資料表中的資料列。 成功透過系統處理特定 HostQ 的訊息之後,DeQueue 會刪除這些資料列。 在刪除這些資料列之後,清除工作便可以清除 Spool (不再由這些資料列參考)。

應用程式佇列成長表示負責清空應用程式佇列的主機實例無法跟上傳入速率。

例如,因為負責處理協調流程的伺服器受限於 CPU 能力,無法處理得更快,所以協調流程應用程式佇列 (PxHostQ) 可能會成長。 不過,如果接收伺服器速度很快,可能會比協調流程伺服器可以處理的速度更快,而導致應用程式佇列成長。

協調流程佇列成長的另一個原因可能是記憶體爭用。 當記憶體中同時具現化許多長時間執行的協調流程實例時,記憶體流失會間接造成節流壓縮執行緒集區,直到記憶體壓力降低為止。

傳送應用程式佇列可能會成長的原因是,如果下游系統無法接收 (從BizTalk Server) 快速傳出的訊息。 因此,訊息會繼續位於 BizTalk 系統中,導致應用程式佇列成長。 這可能會導致節流啟動,並減少影響系統整體輸送量的接收速率。

TrackingData 資料表成長

MessageBox 資料庫中的 TrackingData 資料表是一種轉換資料表,攔截器會寫入 Health 和 Activity (HAT) 和 Business Activity Monitoring (BAM) 追蹤的追蹤資料。 如果停用了追蹤,這個資料表應該是空的。 根據預設,會針對管線和協調流程 In/Out 事件啟用 HAT 追蹤。

如果已啟用訊息本文追蹤,請確定 MessageBox 資料庫伺服器 (,且主機具有「允許主機追蹤」) 正在執行。 確保具有「允許主機追蹤」的主機正在執行,將會減少當主機將資料從 MessageBox 資料庫中的 TrackingData 資料表移至 BizTalk 追蹤資料庫資料表時發生瓶頸的機會。

例如,在升級的屬性和訊息本文追蹤上啟用自訂 HAT 追蹤,即可追蹤自訂事件。 除了 HAT 追蹤資料之外,BAM 資料也會寫入 TrackingData 資料表。 追蹤資料解碼服務 (TDDS,此服務會在啟用追蹤的主機實例上執行,) 負責將此資料從 MessageBox 資料庫移至 BizTalk 追蹤和 BAM 主要匯入資料庫。 然後,成功移動資料之後,TDDS 會刪除此資料。 訊息內文追蹤資料是另外由 SQL 代理程式工作 TrackedMessages_Copy_BizTalkMsgBoxDb 來進行移動。

如果 TDDS 無法跟上攔截器將資料寫入 TrackingData 資料表的速率,此資料表將會成長,導致節流啟動。 這會影響永續性輸送量。 若要降低此問題,請確定至少有一部主機正在執行,並啟用追蹤。

如果資料仍在建置中,請確定 BizTalk 追蹤資料庫無法控制。 此外,請確定封存和清除工作正在執行,而且能夠跟上資料抵達的速率。

注意

根據預設,清除作業無法在封存此資料之前,從 BizTalk 追蹤資料庫資料表刪除資料。 如果您不需要封存追蹤資料,您可以依照 如何從 BizTalk 追蹤資料庫清除資料 () https://go.microsoft.com/fwlink/?LinkID=153817 中的步驟,修改作業以清除 BizTalk 追蹤資料庫而不封存。

另請參閱

資料庫層中的瓶頸