如何疑難排解記憶體流失或 BizTalk Server 程序中的記憶體不足例外狀況

文章翻譯 文章翻譯
文章編號: 918643 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

記憶體遺漏會是一個常見的問題。您可能要再試若要找出記憶體遺漏或例外狀況的記憶體不足 (OOM) 的特定原因,Microsoft BizTalk Server 中的幾個步驟。本文將告訴您正在評估記憶體使用量和可能與記憶體相關的問題時要考量的重要事項。這些考量包括下列各項:
  • 實體 RAM
  • 大型訊息處理
  • 使用非 / 3 GB 切換
  • 自訂元件的使用
  • Microsoft 的哪一個版本。NET Framework 的系統執行時
  • 處理器的數目

簡介

本文將告訴您如何疑難排解記憶體流失或Microsoft BizTalk 的 BizTalk Server 程序中發生記憶體不足例外狀況伺服器。

其他相關資訊

BizTalk Server 處理程序可能發生記憶體遺漏當 Microsoft Windows 工作管理員] 中的記憶體使用量會消耗超過 50%的實體 RAM。記憶體遺漏可能會造成記憶體不足例外狀況記憶體使用量何時會增加處理程序執行的系統記憶體用完之前或等到處理程序而停止運作。

當發生這個問題時,類似的警告訊息事件記錄檔會記錄下列訊息:

事件型別: 警告
事件類別:() 1
事件識別碼: 5410
描述: 已發生錯誤,需要 BizTalk 服務終止。最常見的原因不是意外記憶體錯誤或無法連上其中一個 BizTalk 資料庫的連線中斷時。服務將會關閉,並在 1 分鐘內自動重新啟動。如果有問題的資料庫處於無法使用時,請將重複此循環。
錯誤訊息: 類型的例外狀況System.OutOfMemoryException 已擲回。
錯誤來源:
BizTalk 主控件名稱: BizTalkServerApplication
Windows 服務名稱:BTSSvc {DCC899FE-C62F-41BE-851A-8720B2EB9C14}

事件類型: 警告
事件類別目錄: (1)
事件識別碼: 5410
描述: 發生錯誤,需要 BizTalk 服務終止。最常見的原因如下: 1) 未預期的記憶體不足的錯誤。或 2) 無法連上或其中一個 BizTalk 資料庫的連線中斷。服務將會關閉,並在 1 分鐘內自動重新啟動。如果有問題的資料庫處於無法使用時,請將重複此循環。
錯誤訊息: 型別 'System.OutOfMemoryException' 被擲回的例外狀況。
錯誤來源: mscorlib
BizTalk 主機名稱: BizTalkServerApplication
Windows 服務名稱: BTSSvc$ BizTalkServerApplication

重要考量事項

實體 RAM 及記憶體使用量

因為可以預期的行為,若要使用大約一半的實體 RAM 的處理程序,使用的記憶體使用量為指導方針。比方說,如果 BizTalk Server 有 4 gb 的 RAM,而且 BizTalk Server 處理序會使用約 500 mb 的 RAM,可能遺漏。如果 BizTalk Server 處理序會使用大約 1 GB 的 RAM,可能是記憶體遺漏或大量記憶體的情況。記憶體耗用量可能被因為長時間執行的預存程序 」 或 「 協調流程。請確定您知道 BizTalk 主控件來判斷是否發生記憶體遺漏或高記憶體的狀態通常會使用多少記憶體。

較大的郵件

BizTalk Server 處理較大的郵件時,系統就可能發生記憶體流失。不過,郵件可能正在使用大量的記憶體。如需較大的郵件,請造訪下列 Microsoft 開發人員網路 (MSDN) 網站:
http://blogs.msdn.com/biztalk_core_engine/archive/2005/02/28/381700.aspx

http://msdn.microsoft.com/en-us/library/aa560481 (BTS.10).aspx

此外,請考慮是否應該可以預期高記憶體使用量 BizTalk伺服器正在處理較大的郵件。您可能想要更新硬體,符合效能需求的 BizTalk Server 環境中。

多久才會重新產生記憶體遺漏

會立即發生記憶體遺漏,或它們可能會累積於時間。這兩種案例是公用的。

使用 /3GB 參數,在 32 位元電腦上

一般而言,處理程序可以存取 2 GB 的虛擬位址空間。/3GB參數是需要更多的定址記憶體的系統上的選項。這個選項會改進處理訊息的記憶體使用量。不過, /3GB參數允許僅有 1 GB 定址記憶體為核心模式的作業。此外,這個參數可能會增加風險的集區記憶體不足。

如需有關/3GB參數,請造訪下列 Microsoft 開發人員網路 (MSDN) 網站:
http://msdn.microsoft.com/en-us/library/ms791558.aspx
在 32 位元版本的 Windows 上啟用/3GB參數時,程序可以存取 3 GB 的虛擬位址如果處理程序是大型位址空間感知。處理序是大型位址時可執行檔已經在映像標頭中設定 IMAGE_FILE_LARGE_ADDRESS_AWARE 旗標。由於 BizTalk 程序大量位址感知,BizTalk 將因 /3GB 參數。

因為 BizTalk 大型位址,所以如果 32 位元 BizTalk 主控件執行個體正在執行於 64 位元版本的 Windows (AMD64),BizTalk 程序可利用 4 GB 記憶體位址空間感知。因此,移轉到 64 位元伺服器的高記憶體應用程式可能會是最好的辦法。

64 位元 BizTalk 處理程序在 64 位元版本的 Windows (AMD64) 上有 8 TB 的定址記憶體。

您也應該考慮的虛擬位元組和處理序所使用的私用位元組。BizTalk 主控件執行個體 (也就是。NET 架構應用程式) 可能會收到記憶體不足的錯誤之前的虛擬位元組值到達 2 GB。這可能發生即使可定址的處理程序在 32 位元版本的 Windows (沒有/3GB參數) 的記憶體最大值為 2 GB。如需說明為何這可能會發生,請造訪下列 Microsoft 開發人員網路 (MSDN) 網站:
http://msdn.microsoft.com/en-us/library/ms972959.aspx
http://blogs.msdn.com/tess/archive/2005/11/25/496898.aspx
/3GB參數也會增加 1800 MB 到 800 mb 的 BizTalk 程序的最大私用位元組。如需相關資訊。NET Framework 應用程式的效能與/3GB參數,啟用,請造訪下列 Microsoft 開發人員網路 (MSDN) 網站:
http://msdn2.microsoft.com/en-us/library/ms998583.aspx
下表摘要了這項資訊,包括虛擬位元組和私用位元組之實際限制。
摺疊此表格展開此表格
處理程序視窗定址記憶體 (含大量位址感知處理程序)實際的限制,如虛擬位元組實際的限制為私用位元組的
32 位元32 位元2 GB1400 MB800 MB
32 位元32 位元 3 gb3 GB2400 MB1800 MB
32 位元64 位元4 GB3400 MB2800 MB
64 位元64 位元8 TB不適用不適用
如需有關 32 位元與 64 位元 Windows 的定址記憶體的詳細資訊,請造訪下列 Microsoft 開發人員網路 (MSDN) 網站:
http://msdn.microsoft.com/en-us/library/aa366778.aspx
下表列出針對不同版本的 BizTalk Server PAE 與 /3GB 支持度。
摺疊此表格展開此表格
產品PAE3 GB
BizTalk Server 2004[是]
BizTalk Server 2006[是][是]
BizTalk Server 2006 R2[是][是]
BizTalk Server 2009 (機器翻譯)[是][是]
如果您必須啟用/3GB參數,以符合電腦的效能需求執行 BizTalk Server,您可能要考慮將伺服器新增至 BizTalk 群組。這可讓您向外延展的需要大量記憶體的主控件執行個體。

BizTalk 元件在網際網路資訊服務 (IIS) 處理程序中執行,可能會也可以啟用/3GB參數時使用。

正在執行 Windows SharePoint Services 2.0 或更新的版本或 SharePoint Portal Server 2003 SP2 或更新版本的電腦上不支援/3GB參數。 如需詳細資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
933560Windows Server 2003 /3GB 參數不支援 Windows SharePoint Services 2.0 或更新版本中或在 SharePoint Portal Server 2003 Service Pack 2 或更新版本中

自訂元件的使用

如果您使用自訂的元件,例如 [管線] 或 [服務元件您必須知道這些元件所執行的動作。您還必須知道這些元件的潛在影響記憶體使用量。A元件轉換的文件時,就會發生常見的記憶體問題。[轉換操作是需要大量記憶體的作業。當文件時轉換,BizTalk Server 會傳到 Microsoft 的訊息資料流。NET在 BizTalk 程序中的架構XslTransform類別。

另一個常見的問題發生於處理大量的字串操作。使用大量的字串操作可能會耗用大量的記憶體。如需有關如何改善效能,請造訪下列 Microsoft 開發人員網路 (MSDN) 網站:
http://msdn2.microsoft.com/en-us/library/ms998547

版本。NET Framework

安裝。NET Framework 2.0 和。NET Framework 1.1 會有不同的記憶體的行為。因此,您可能會看到它們之間的不同結果。如果您使用。NET Framework 中,確認已選取最新版本。NET Framework Service Pack 1 安裝。這些 service pack 解決幾個已知的記憶體問題。如需詳細資訊,請按一下下面的文件編號:

945757 中所修正的問題。NET Framework 2.0 Service Pack 1
867460 清單中所修正的錯誤。NET Framework 1.1 Service Pack 1

處理器數目

公用語言執行時間 (CLR) 具有下列廢棄項目回收行程 (Gc):
  • 工作站 (Mscorwks.dll)
  • 伺服器 (Mscorsvr.dll)
如果電腦執行 BizTalk Server 到多處理器的系統。NET Framework 會使用伺服器版本的執行引擎。這是預設行為。「 伺服器 」 記憶體回收行程的最大輸送量的設計。此外,「 伺服器 」 記憶體回收行程可以調整至能提供更高的效能。這個記憶體回收行程會配置記憶體,並稍後再釋放記憶體,以提供高效能在系統上。因此,會加上一些執行 BizTalk Server 的電腦。NET 架構元件,就可能發生記憶體流失。不過,在此案例中,高記憶體使用量是預期的行為。如果電腦的系統記憶體用完,或如果處理程序會停止運作,可定位記憶體不足,表示可能發生記憶體遺漏的狀況。

如果電腦也就是執行 BizTalk Server 是單一處理器的系統。NET Framework會使用工作站的版本執行引擎。這是預設值行為。不是工作站記憶體回收行程配置演算法縮放比例或最大輸送量的設計。這個記憶體回收行程會耗用並行記憶體回收行程 asp.這些方法是為設計具有複雜的使用者介面的應用程式。這類應用程式可能需要比較積極的廢棄項目收集。

重要這個章節、 方法或工作包含步驟告訴您如何修改登錄。不過,如果您不當修改登錄,可能會發生嚴重的問題。因此,請確定小心執行這些步驟。為加強保護,請先備份登錄再進行修改。然後,您可以在發生問題時還原登錄。如需有關如何備份和還原登錄的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
322756 如何備份及還原 Windows 中的登錄
某些情況下,可能是適用於多處理器系統上執行工作站的版本執行引擎。若要切換至工作站的版本執行引擎,您可以使用下列的登錄機碼。

BizTalk 2006 及更新版本

與對應的值,建立下列的 CRL 裝載字串登錄機碼:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTSSvc$BizTalkHostName\CLR 裝載

名稱: 類別
資料: wks

BizTalk 2004

與對應的值,建立下列的 CRL 裝載字串登錄機碼:

{GUID} HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\BTSSvc \CLR 主應用程式

名稱: 類別
資料: wks

如需詳細資訊,請造訪下列 Microsoft 開發人員網路 (MSDN) 網站:
http://msdn2.microsoft.com/en-us/library/ms973838

http://blogs.msdn.com/tess/archive/2008/04/17/how-does-the-gc-work-and-what-are-the-sizes-of-the-different-generations.aspx

常見的原因和解決方案

程序記憶體使用狀況] 和 [實體記憶體使用量節流閾值

BizTalk Server 2006 年和更新版本中,可以變更的處理程序的記憶體使用量實體記憶體使用量節流設定臨界值。
  • 根據預設, 程序記憶體使用量 節流閾值設定為 25。如果超過這個值,而 BizTalk 的處理程序的記憶體使用量是 300 MB 以上,就可能發生的調整流速的條件。32 位元伺服器上,您可以增加處理程序記憶體使用方法的值設為 50。64 位元伺服器上,您可以增加此值設為 100。這可讓更多的記憶體耗用量 BizTalk 處理程序開始前節流。
  • [ 實體記憶體使用量 節流閾值都有預設值為 0。此閾值來測量總系統記憶體。因此,如果您設定的值不是 0,節流條件可能非 BizTalk 程序正在使用大量記憶體。
如需有關調整流速的臨界值的詳細資訊,請造訪下列 Microsoft 開發人員網路 (MSDN) 網站:
http://msdn.microsoft.com/en-us/library/aa559628.aspx

凍結節流閾值

64 位元主機上執行的協調流程時,預設記憶體凍結閾值可能會造成太多凍結。如需有關這個問題的詳細資訊,請參閱下列的 Microsoft 開發人員網路 (MSDN) 網站上的 「凍結預設內容」 主題:
http://msdn.microsoft.com/en-us/library/aa560586.aspx
附註的 64 位元主機支援 BizTalk Server 2006年及更新版本。

在對等 32 位元的主控件執行個體中的硬體,藉由使用節流閾值的預設記憶體凍結執行相同的協調流程時,是名義上觀察到的凍結。

因為 64 位元架構提供擴充的記憶體位址空間 (16 TB,而不是為 4 GB),64 位元的主控件執行個體配置更多的記憶體比 32 位元的主控件執行個體。這可能會導致預設記憶體節流閾值超過。

若要解決這個問題,請變更 VirtualMemoryThrottlingCriteria 和 PrivateMemoryThrottlingCriteria 檔案中的值 BTSNTSvc64.exe.config。使用 Process\Virtual 位元組和 Process\Private 個位元組的效能監視器計數器來決定的協調流程執行個體所配置的記憶體最大數量。
  • 將 OptimalUsage 值為根據下列這兩個屬性:
    VirtualMemoryThrottlingCriteria: \Process\Virtual 位元組值 + 10 %
    PrivateMemoryThrottlingCriteria: \Process\Private 位元組值 + 10 %
  • 設定這兩個屬性到 OptimalUsage 值 + 30%MaximalUsage
比方說,如果 \Process\Virtual 協調流程執行個體的位元組效能監視器計數器值是 5,784,787,695 個位元組 (5,517 MB),設定 OptimalUsage 值為 VirtualMemoryThrottlingCriteria 到 6,069 MB (5,784,787,695 1 1.10 = 6,363,266,464.5 位元組)。將 MaximalUsage 值設為 VirtualMemoryThrottlingCriteria 到 7,889 MB (6,363,266,464.5 1 1.30 = 8,272,246,403.85 位元組)。

如果 \Process\Private 個位元組的效能監視器計數器的值是 435689400 個位元組 (415 MB),將 OptimalUsage 值設定為 457 MB (435689400 1 1.10 = 479258340 位元組) 的 PrivateMemoryThrottlingCriteria。將 MaximalUsage 值設定為 594 MB (479258340 1 1.30 = 623035842) 的 PrivateMemoryThrottlingCriteria。

例如,下列值會指定在 BTSNTSvc64.exe.config 檔案,以縮小 [節流設定。
摺疊此表格展開此表格
效能監視器計數器配置記憶體OptimalUsageMaximalUsage
\Process\Virtual 位元組5784787695 個位元組 (5517 MB)60697889
\Process\Private 位元組435689400 個位元組 (415 MB)457594
這些值然後可表示 BTSNTSvc64.exe.config 檔案中,如下所示:
<xlangs>
      <Configuration>
                  <Dehydration>
                              <VirtualMemoryThrottlingCriteria OptimalUsage="6069" MaximalUsage="7889" IsActive="true" />
                              <PrivateMemoryThrottlingCriteria OptimalUsage="457" MaximalUsage="594" IsActive="true" />
                  </Dehydration>
      </Configuration>
</xlangs>
如果要判斷哪一個主控件執行個體正在執行的協調流程,就可以符合從 \BizTalk:Messaging\ID 處理程序的處理程序識別碼和 \Process\ID 處理程序效能監視器計數器。然後,檢查顯示相對應的 \Process\Virtual 位元組和 \Process\Private 位元組效能監視器計數器的平均值。

附註高凍結在 SQL Server 2008年上執行 BizTalkMsgBoxDb 資料庫時,可能會導致效能明顯降低。

BizTalk Server Service Pack 和累加更新

BizTalk Server service pack 和累積的更新都包含最新的修正程式。其中包括那些會影響 System.OutOfMemoryException 的已知的問題。

2281783 BizTalk Server 2006 R2 的 Service Pack 以及累積的更新清單

Microsoft BizTalk Server 2004年客戶支援診斷

HeapDeCommitFreeBlockThreshold

根據預設,theHeapDeCommitFreeBlockThreshold 登錄機碼值為 0。數值 0 則表示該堆積管理員會解除,就可以使用每個 4 千位元組 (KB) 網頁。取消認可作業可能會造成虛擬記憶體分散。堆集管理員] 中的 [ HeapDeCommitFreeBlockThreshold ] 設定的大小取決於工作內容,系統正在進行。檔案大小為 0x00040000 是建議的開始值。

您將此值之前,請考慮下列資訊的 [
HeapDeCommitFreeBlockThreshold
登錄機碼:
  • 這項變更只會套用至 [記憶體分散程度發生問題。
  • 這項變更是全系統。因此,大部分的處理序將會在啟動時,使用更多的記憶體。
  • 只考慮這項變更為 BizTalk 的系統伺服器作為其首要職責。
若要減少虛擬記憶體分散程度,您可以增加堆集管理員藉由變更的值中的 [ HeapDeCommitFreeBlockThreshold ] 設定的大小下列的登錄機碼:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session管理員


數值名稱:HeapDeCommitFreeBlockThreshold
實值型別: 呼叫完成
數值資料:0x00040000 (這是建議的起始值)。
預設的值: 不存在
如需有關 HeapDeCommitFreeBlockThreshold 登錄機碼的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
315407"HeapDecommitFreeBlockThreshold"的登錄機碼

轉換作業

BizTalk Server 執行 XML 轉換作業的較大的郵件中接收埠,在 [傳送埠,或在 [XLANG,XSL 會轉換時載入記憶體中的整個訊息。.

若要解決這個問題,請使用下列方法之一:
  • 該 BizTalk Server 減少的訊息數目在同一時間的處理程序。
  • 減少正在 XML 訊息的大小進行轉換。
System.Policy.Security.Evidence物件常常會用於轉型,並會消耗記憶體。當對應包含內嵌 C# (或任何其他的內嵌語言) 會使用 「 指令碼處理 」 運算質時,在記憶體中建立的組件。System.Policy.Security.Evidence物件使用的實際呼叫組件的物件。這種情況下會建立一個根的物件,才會刪除 BizTalk 服務重新啟動。

大部分的預設 BizTalk 運算質會實作為內嵌指令碼。這些項目可能會造成 System.Byte [] 來收集在記憶體中的物件。最小化記憶體耗用量,我們建議您將任何小的組件會使用這些運算質的對應。然後,參考這個組件。使用下列的圖表,以判斷哪一個運算質使用內嵌指令碼,並且各運算質不使用內嵌指令碼。

在第二欄中,[是],此運算質會實作為內嵌指令碼,而且它可以讓收集 System.Byte [] 物件在記憶體中的方法。"No"表示此運算質不是實作成內嵌指令碼,就不會造成 System.Byte [] 來收集在記憶體中的物件。
摺疊此表格展開此表格
運算質內嵌指令碼嗎?
所有字串運算質[是]
所有的數學運算質[是]
IsNil 以外的所有邏輯運算質[是]
邏輯 IsNil 」 運算質
所有的日期/時間運算質[是]
所有的轉換運算質[是]
所有科學運算質[是]
所有的累計運算質[是]
所有資料庫運算質
進階運算質內嵌指令碼嗎?
迴圈運算質
值對應運算質的簡維
判斷提示 」 運算質
表格抽選程式運算質
表格迴圈運算質
指令碼處理 」 運算質與內嵌 C#[是]
指令碼處理 」 運算質與內嵌 JScript.NET[是]
指令碼處理 」 運算質與內嵌的 Visual Basic。NET[是]
使用內嵌 XSLT 指令碼處理運算質
使用內嵌 XSLT 呼叫範本指令碼處理運算質
呼叫外部組件的指令碼處理 」 運算質
Nil 值 」 運算質
值對應運算質
大量複製 」 運算質
反覆項目 」 運算質
索引運算質
記錄計數運算質
BizTalk Server 2006年和更新版本中顯著地改進記憶體管理大型文件。若要這樣做,BizTalk Server 會實作可設定的訊息大小臨界值載入記憶體中的文件,在轉型作業。預設訊息大小臨界值為 1 MB。如需有關 [TransformThreshold] 設定的詳細資訊,請造訪下列的 Microsoft 開發人員網路 (MSDN) 網站:
http://msdn2.microsoft.com/en-us/library/aa560481.aspx

大型的屬性值和大型的項目值

BizTalk Server 當執行接收管線或 XML 文件上的傳送管線,這些封包承載處理匯入若文件包含一或多個下列的實體記憶體:
  • 大型的屬性值
  • 大型的項目值
  • 大型的屬性或項目標籤
若要解決這個問題,請限制這些實體的大小。如果這個方法是不可能,請確定您的 BizTalk 主控件執行個體不會處理多個在同一時間的這類的文件。

自訂管線元件

您將會載入與整體的自訂管線元件到記憶體資料流。BizTalk Server 所隨附的所有元件除了轉換,支援資料流。儘量不要使用這些元件串流處理期間的記憶體。不過,可能不支援自訂管線元件資料流。

負載較高的資料流

傳送這些操作的負載較高時,主機執行的記憶體用完。BizTalk Server 的傳送管線和傳送配接器支援資料流。在資料流中,每個元件將載入至記憶體資料流的小片段。因為每一封郵件包含其他資料結構,加上一則訊息可以是多大或小的內容中,這個問題會影響 BizTalk 的行為伺服器負載較高。

BizTalk Server 的行為會受到影響因為引擎載入預先設定的訊息數目。數目載入引擎的訊息為基礎的值,會出現在LowWaterMark 欄位,並 Adm_serviceClass 資料表中的 [HighWaterMark] 欄位。Adm_serviceClass 資料表是在 BizTalk 管理資料庫中。這些值控制 BizTalk Server 處理,或在傳送的郵件數目相同的時間。

HighWaterMark值是此引擎處理的郵件總數一次。預設值是每個 CPU 的 200 個訊息。因此,在8 個處理器的伺服器,傳送主機會嘗試處理已經累積到 1600 訊息 (200 1 8) 在相同的時間。如果您假設每一封郵件為 50 KB,郵件就會等於 80MB (1,600 1 50 = 80,000 KB)。

如果要解決這個問題,您可以變更的HighWaterMark值,在資料庫中的LowWaterMark值。您所使用的值大小而定訊息。

如需有關常見的原因記憶體不足狀況,請參閱 「 記憶體成長在 BizTalk 傳訊 」 一節在下列 Microsoft 網站:
http://blogs.msdn.com/biztalkperformance
BizTalk Server 2006年和更新版本中,您可以變更預設主控件節流設定。如需有關如何變更預設主控件調整流速設定,請造訪下列 Microsoft 開發人員網路 (MSDN) 網站:
http://msdn2.microsoft.com/en-us/library/aa559628.aspx

請試著簡化問題

如果您已找出記憶體遺漏,請試著判斷原因藉由移除自訂元件,或透過簡化地圖。另外,請嘗試重現使用簡單的協調流程] 或 [簡單的解決方案問題。一般而言,您應建立個別接收主機接收配接器。您也應該建立個別的傳送主機傳送配接器。當您使用這種方法,每個配接器可以在不同的處理序中執行。因此,如果您的 BizTalk Server 程序發生記憶體不足狀況,您將會知道所牽涉的元件。

疑難排解步驟

如果要疑難排解記憶體不足狀況,請使用 [偵錯診斷 」 工具來監視記憶體配置,經過一段時間。偵錯診斷工具可以建立,並分析記憶體遺漏傾印 (.dmp) 檔案。當您疑難排解記憶體遺漏,其目標是要高之前,請先連接 Leaktrack.dll記憶體的狀態會重現來擷取經過一段時間的記憶體增長。Leaktrack.dll會隨附 「 偵錯診斷 」 工具。
  1. 安裝 「 偵錯診斷 」 工具。

    下列檔案是可以從 「 Microsoft 下載中心 」 下載:

    摺疊此圖像展開此圖像
    下載
    立即下載 「 偵錯診斷工具 」 套件。

    如需有關如何下載 Microsoft 支援檔案的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
    119591 如何從線上服務取得 Microsoft 的支援檔案
    Microsoft 已掃描這個檔案有無病毒。Microsoft 會使用最新的病毒偵測軟體所能取得的檔案已發佈的日期。檔案儲存在加強保全的伺服器,以避免任何未經授權的更改。
  2. 使用 「 效能監視器來收集系統相關的資料效能。這項資料可能會提供有關的效率的重要指標您 BizTalk Server 的環境。目標是奪取流程績效經過一段時間。因此,啟用記憶體遺漏之前的效能監視器記錄就會發生。

如何使用效能監視器記錄

選取要記錄的資料
若要選取資料的記錄,請使用適合的方法您的作業系統:
  • Windows Server 2008 及 Windows Server 2008 R2
    1. 在 [系統管理工具] 中開啟 可靠性和效能監視器.
    2. 以滑鼠右鍵按一下 效能監視器按一下 然後按一下 資料收集器集合工具.
    3. 名稱 方塊中輸入描述性的名稱,然後再按一下 下一步.
    4. 請注意根目錄中,,然後按一下 下一步.
    5. 按一下 開始立即設定這個資料收集器然後按一下 完成.
    6. 展開 資料收集器集合工具展開 使用者定義 然後選取您的檔案。
    7. 以滑鼠右鍵按一下 系統監視器記錄檔然後按一下 屬性.
    8. 按一下 新增 在上 效能計數器 索引標籤選取下列的物件,然後按一下 新增 之後您選取每個物件:
      • .Net CLR 例外狀況
      • .Net CLR 記憶體
      • BizTalk: 訊息
      • BizTalk:TDDS
      • 記憶體
      • 處理程序
      • 處理器
      • XLANG/s 協調流程
      如果 SQL Server 是在本機,也會加入下列物件:
      • SQLServer:Databases
      • SQLServer:General 統計資料
      • SQLServer:Memory 管理員
    9. 按一下 [確定].
    10. 變更 取樣間隔值 方塊 5 秒.

      附註取樣間隔值和開始監視是主觀的。這些值取決於,當記憶體遺漏會重現。因為記錄檔可能非常大,指定在其中您可以取得的資訊,而不會充斥伺服器,您必須具備的間隔。
    11. 按一下 [確定].
    若要停止收集資料,請按一下 停駐點 在上 動作 功能表。
  • Windows Server 2003 或 Windows XP
    1. 展開 效能記錄檔及警示.
    2. 以滑鼠右鍵按一下 計數器記錄檔然後再按一下 新增記錄檔設定.[ 新增記錄檔設定對話方塊隨即出現。
    3. 名稱 方塊中,輸入描述性名稱,然後再按一下 [確定].
    4. 請注意記錄檔的位置。(您也可以按一下 記錄檔 索引標籤,然後再按一下 設定 若要變更記錄檔的位置)。
    5. 按一下 新增計數器.
    6. 選取 所有計數器 以及 所有執行個體.
    7. 效能物件 清單中選取下列的物件。按一下 新增 之後您選取每個物件。
      • .Net CLR 例外狀況
      • .Net CLR 記憶體
      • BizTalk: 訊息
      • BizTalk:TDDS
      • 記憶體
      • 處理程序
      • 處理器
      • XLANG/s 協調流程
      如果 SQL Server 是在本機,也會加入下列物件:
      • SQLServer:Databases
      • SQLServer:General 統計資料
      • SQLServer:Memory 管理員
    8. 按一下 關閉.
    9. 中的值變更 資料取樣間隔 為 5 秒。

      附註資料取樣間隔值,並開始監視是主觀的。這些值取決於,當記憶體遺漏會重現。因為記錄檔可能非常大,指定在其中您可以取得的資訊,而不會充斥伺服器,您必須具備的間隔。
    10. 按一下 [確定].
    若要停止收集資料,請以滑鼠右鍵按一下 [計數器記錄檔的名稱,然後按一下 停駐點.
取得傾印檔案
若要取得傾印檔案,請使用下列方法之一:
  • 方法 1: 自動
    使用 DebugDiag 建立記憶體和處理溢位的規則是建議的方法來擷取記憶體傾印。記憶體和處理遺漏規則,自動附加 Leaktrack.dll。這用來追蹤記憶體配置。若要建立的記憶體和處理溢位的規則,請依照下列步驟執行:
    1. 啟動偵錯1.1 的診斷工具。
    2. 選取 記憶體和控制代碼遺漏並然後按一下 下一步.
    3. 選取 Btsntsvc.exe 處理程序,然後再按一下 下一步.
    4. 在設定遺漏規則頁面上,請依照下列步驟執行:
      1. 按一下以選取 啟動規則就會啟動時,立即追蹤記憶體 核取方塊。否則,您可以指定 BTSNTSvc.exe 程序中注入 LeakTrack.dll 之前的準備時間。
      2. 按一下 設定然後執行下列一項:
        • 確認已選取 自動建立當機規則 已選取。藉由選取此選項,如果 BTSNTSvc.exe 程序會停止,則將自動建立記憶體傾印。
        • 按一下以選取 虛擬位元組抵達時,會產生 userdump 核取方塊,並保留預設值 1024.
        • 按一下以選取 與每一個額外 核取方塊,並保留預設值為 200。
        藉由選取的虛擬位元組到達選項、 記憶體傾印會自動建立時的虛擬位元組使用 1024 MB。如果虛擬位元組增加 200 mb 時,會自動建立另一個記憶體傾印。
      3. 按一下 [儲存檔案 & 關閉
      4. 按一下 [下一步]。
    5. 在 [選取傾印位置和規則名稱] 頁面上,按一下 下一步.

      附註您也可以變更在傾印檔案的路徑 Userdump 位置 在此頁面上的方塊。
    6. 按一下 完成 若要讓規則現在使用中。
    附註現在正在追蹤規則狀態。建立記憶體傾印時,每次的值會增加在 [規則] 索引標籤上的 [Userdump 計數] 欄位中。預設的記憶體傾印位置是檔 Files\DebugDiag\Logs。
  • 方法 2: 手動
    您可以手動附加 Leaktrack.dll,並手動取得記憶體傾印檔案。這可讓您控制在建立記憶體傾印時。執行這項操作,請依照下列步驟執行:
    1. 啟動偵錯1.1 的診斷工具。
    2. 按一下 處理程序 索引標籤。
    3. 以滑鼠右鍵按一下 Btsntsvc.exe 處理程序,然後再按一下 會漏水的監視器.
    4. 偵錯診斷工具 對話方塊方塊中按一下 [是]然後按一下 [確定].
    建立當機規則來監視相同的 Btsntsvc.exe 程序,以防程序會停止,才能建立記憶體傾印:
    1. 開始偵錯診斷工具 1.1。
    2. 選取 損毀然後按一下 下一步.
    3. 選取 特定處理程序然後按一下 下一步.
    4. 選取相同的 Btsntsvc.exe 程序,然後按一下 下一步.
    5. 在上 進階的設定 (可省略) 頁面上按一下 下一步.
    6. 選取 [傾印位置和規則名稱 (可省略) 對話方塊中,按一下 下一步.
    7. 選取 立即啟動規則然後按一下 [完成]。
    當處理程序達到 80%至 60%的 RAM 時,Btsntsvc.exe 程序上按一下滑鼠右鍵,然後按一下 建立完整的 Userdump.如果您可以建立使用者傾印之前,就會停止 BizTalk 程序,當機規則應該才會生效,並建立記憶體傾印。
停止 「 效能監視器記錄
如果您所擷取的記憶體傾印 」 和 「 效能監視器 」 資料,則到此為止效能監視器記錄大約兩分鐘後會建立記憶體傾印。
分析傾印檔案
為了協助判斷造成記憶體遺漏的原因,您可以使用偵錯診斷 」 工具來分析傾印檔案。執行這項操作,請依照下列步驟執行:
  1. 按一下 進階的分析索引標籤。
  2. 按一下 新增資料檔案然後找出.dmp 檔案。
  3. 選取 記憶體壓力分析指令碼,然後再按一下 開始分析.
根據預設,分析報告檔 (.mht)會建立檔 Files\DebugDiag\Reports 資料夾中的分析完成時。報表檔案也會顯示在您的瀏覽器中。報表檔案包含分析的結果。此外,「 報表 」 檔案可能包含如何解決記憶體遺漏的建議。

如果您使用自訂Dll,您可以新增自訂的.pdb 檔,以進行分析的符號路徑。若要這點,請依照下列步驟執行:
  1. 開啟偵錯的診斷工具。
  2. 在上 工具 功能表中,按一下 選項與設定.
  3. 偵錯符號搜尋路徑方塊中輸入符號路徑。
如果您想要分析傾印檔案的說明,請連絡 Microsoft客戶支援服務。如需客戶支援服務的完整清單電話號碼和支援費用的相關資訊,請造訪這個Microsoft 網站:
看到
請連絡客戶支援服務之前,壓縮傾印檔案、 效能監視器記錄檔、 分析報告檔中,以及更新的事件記錄 (.evt 檔)。您可能必須傳送這些檔案,以 BizTalk Server 支援工程師。

屬性

文章編號: 918643 - 上次校閱: 2012年6月13日 - 版次: 1.0
這篇文章中的資訊適用於:
  • Microsoft BizTalk Server Branch 2010
  • Microsoft BizTalk Server Developer 2010
  • Microsoft BizTalk Server Enterprise 2010
  • Microsoft BizTalk Server Standard 2010
  • Microsoft BizTalk Server 2009 Branch
  • Microsoft BizTalk Server 2009 Developer
  • Microsoft BizTalk Server 2009 Enterprise
  • Microsoft BizTalk Server 2009 Standard
  • Microsoft BizTalk Server 2006 R2 Branch
  • Microsoft BizTalk Server 2006 R2 Developer Edition
  • Microsoft BizTalk Server 2006 R2 Enterprise Edition
  • Microsoft BizTalk Server 2006 R2 Standard Edition
  • Microsoft BizTalk Server 2006 Enterprise Edition
  • Microsoft BizTalk Server 2006 Developer Edition
  • Microsoft BizTalk Server 2006 Standard Edition
  • Microsoft BizTalk Server 2004 Enterprise Edition
  • Microsoft BizTalk Server 2004 Developer Edition
  • Microsoft BizTalk Server 2004 Partner Edition
  • Microsoft BizTalk Server 2004 Standard Edition
關鍵字:?
kbhowto kbmt KB918643 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:918643
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com