如何擷取已發生記憶體溢位之程序的記憶體傾印
當 BizTalk 程序 BTSNTSvc.exe 無法釋放不再需要的記憶體,因此導致一段時間後可用記憶體數量減少,就會定義為記憶體溢位。 您可以檢視 [工作管理員] 中可用 [進程] 索引標籤的 [Mem 使用量] 資料行底下的值,來判斷進程的記憶體使用量。 如果程序在一段時間後持續使用記憶體,而未釋放記憶體,便會嚴重影響整體系統效能。
本主題包含逐步指示,可讓您透過「規則」或手動擷取疑似發生記憶體溢位之 BizTalk 程序的記憶體傾印。 如果無法預測記憶體溢位的發生,請使用手動擷取記憶體傾印的方法。
若要使用規則,擷取發生記憶體溢位之程序的記憶體傾印
從 [開始]、 [所有程式]、 [IIS 診斷]、[ 偵錯診斷工具]、[ 偵錯診斷工具]、[偵錯診斷工具] 1.0啟動 [偵錯診斷] 工具。
如果未顯示 [新增規則精靈] 的 [ 選取規則類型 ] 對話方塊,請按一下 [ 工具 ] 功能表,選取 [ 規則動作],然後按一下 [ 新增規則 ] 以顯示 [新增規則精靈]。
在 [選取規則類型] 對話方塊中選取[記憶體和控制碼流失] 選項,然後按 [下一步]。
選取懷疑遺漏記憶體的 BTSNTSvc.exe 進程,然後按 [ 下一步]。
在 [ 設定追蹤持續時間 ] 對話方塊中,遵循下列步驟:
如果觀察到的進程記憶體成長立即發生,請檢查啟用 規則時立即啟動記憶體追蹤的選項。 如果觀察到的進程記憶體成長不會立即發生,請在 [ 準備時間 ] 文字方塊中指定適當的分鐘數,之後記憶體追蹤就會啟動。
注意
如果由於載入特定元件至記憶體 (例如 BizTalk 協調流程參考外部元件時) 而導致記憶體溢位,可能不會立即發生所觀察的程序記憶體成長。
在 [ 追蹤時間 ] 文字方塊中指定適當的分鐘數,之後記憶體追蹤將會停止。 這必須是可以重現記憶體溢位、足夠長的分鐘數。 經過這段期間,便會擷取程序的記憶體傾印。
檢查自動 建立當機規則的選項,以在非預期的進程結束時取得使用者傾印。
按一下 [下一步]。
在 [ 選取傾印位置和規則名稱] 對話方塊中,按一下 [下一步 ] 接受預設值。
在 [ 規則完成] 對話方塊中,按一下 [ 完成] 接受 [ 立即啟用規則]的預設值。
根據預設,進程記憶體傾印會儲存至本機電腦的 \Program Files\IIS Resources\DebugDiag\Logs\ <name,在 [設定追蹤持續時間] 對話方塊中指定的時間間隔之後,本機電腦的損毀規則 > 目錄。
若要手動擷取發生記憶體溢位之程序的記憶體傾印
從 [開始]、 [所有程式]、 [IIS 診斷]、[ 偵錯診斷工具]、[ 偵錯診斷工具]、[偵錯診斷工具] 1.0啟動 [偵錯診斷] 工具。
如果顯示 [新增規則精靈] 的 [ 選取規則類型 ] 對話方塊,請按一下 [ 取消]。
按一下即可選取 [偵錯診斷工具] 的 [ 進程 ] 索引標籤。
以滑鼠右鍵按一下懷疑遺漏記憶體的 BTSNTSvc.exe 進程,然後按一下 [ 監視流失]。
監視 工作管理員 中進程的記憶體使用量,以及當進程記憶體使用量接近 BizTalk 電腦上可用記憶體的 60-80% 時;以滑鼠右鍵按一下進程,然後選取 [ 建立完整使用者傾印] 選項,手動擷取進程的記憶體傾印。
根據預設,程序的記憶體傾印會儲存在本機電腦的 \Program Files\IIS Resources\DebugDiag\Logs\Misc\ 目錄。