COM+ 支援自動收集 Windows Server 中的進程傾印檔案和進程終止
適用於: 適用於 Windows 10 的 Windows SDK
原始 KB 編號: 910904
簡介
當 COM+ 元件遇到異常高的呼叫時間時,系統會記錄事件。 事件記錄檔會識別遇到問題的 COM+ 元件。 此外,事件記錄檔會提及這篇文章(910904)。 系統可以設定為執行下列其中一個或兩個動作:
- 自動收集進程傾印檔案,以分析問題的根本原因。
- 終止程式以協助從問題中復原,而不需手動介入。
在系統收集傾印檔案之後,請使用 偵錯診斷工具 (DebugDiag) 來產生描述問題並提供已知解決方案的報告。
預設行為
請參考下列案例:
- COM+ 元件的呼叫時間超過 10 分鐘。
- 當您載入此長時間執行 COM+ 元件的應用程式正在執行時,開啟 [元件服務] Microsoft管理控制台 (MMC) 嵌入式管理單元。
在此案例中,下列事件會記錄在應用程式記錄檔中:
Event Type: information
Event Source Information: COM+
COM+ Event Category: (117)
Event ID: 782
Description: The average call duration exceeded 10 minutes.
If this is not the expected behavior, see Microsoft Knowledge Base Article 910904 in http://support.microsoft.com for detailed information about
how to use the COM+ AutoDump feature to automatically generate dump files and terminate the process if the problem recurs.
Server application ID: <YourAppID>
Server application instance ID: <YourAppInstanceID>
Server application name: <YourAppName>
設定選項
重要
本節牽涉到對登錄的修改。 請仔細遵循步驟。 如果您未正確修改登錄,可能會發生嚴重問題。 備份登錄作為預防措施。 如需備份和還原登錄的詳細資訊,請參閱如何在 Windows 中備份及還原登錄。
當偵測到長時間執行的 COM+ 元件時,系統可以設定為執行下列其中一個或兩個動作:
自動收集進程傾印檔案。
終止進程。
若要這樣做,請使用下列登錄值:
值名稱 資料類型 描述 預設值 AverageCallThreshold
REG_DWORD
閾值,以秒為單位,當採取適當的動作時 0 DumpType
REG_DWORD
0 = 產生完整傾印檔案;1 = 產生小型傾印檔案;2 = 沒有傾印檔案 0 Terminate
REG_DWORD
0 = 進程將會繼續;1 = 行程將會終止 0 若要全域定義計算機上所有 COM+ 元件的動作,請在下列登錄機碼下新增組態值:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\COM3\AutoDump
若要定義要針對特定 COM+ 元件採取的動作,不論全域設定為何,請在下列登錄機碼下新增組態值:
HKEY_CLASSES_ROOT\AppId\{<YourAppID>}\AutoDump\{<YourCLSID>}
建議
下列內容示範如何檢查和分析完整的傾印檔案。
收集完整傾印檔案
當 COM+ 元件遇到異常高的呼叫時間時,收集完整的傾印檔案。 例如,建立下列單一登錄值:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\COM3\AutoDump AverageCallThreshold = 300
如需如何為特定環境選取適當AverageCallThreshold
登錄值的詳細資訊,請參閱考慮一節。
同樣地,在 COM+ 應用程式中發生未處理的例外狀況時,收集完整的傾印檔案。 若要這樣做,請在每個 COM+ 應用程式屬性的 [傾印] 索引卷標上,核取 [啟用應用程式錯誤上的映射傾印] 複選框。
分析傾印檔案
若要分析傾印檔案,請遵循下列步驟:
下載並安裝偵錯診斷工具(DebugDiag)。
依照下列步驟,使用偵錯診斷工具來產生傾印檔案的分析報告:
- 從 [開始] 功能表執行DebugDiag Analysis 應用程式。
- 選取 [ 設定],然後選取 [ 喜好設定 ] 索引標籤。
- 請確定已核取 [符號搜尋路徑] 欄位中的 [Microsoft公用符號伺服器] 選項,然後選取 [上一頁]。
- 選取 [ 預設分析\ CrashHangAnalysis ] 選項。
- 選取 [ 新增數據檔]。
- 選取您想要分析的傾印檔案。
- 選取開始分析。
產生的 HTML 報表會顯示在桌面上的新Microsoft Internet Explorer 視窗中,並儲存至 DebugDiag Reports 目錄。 此目錄的預設位置是 %USERPROFILE%\Documents\DebugDiag\Reports。
若要解決此問題,請遵循報告的建議一節中提供的指引。 報表的這個區段可能會建議下列事項:
- 它可能會將您導向至描述已知問題的Microsoft知識庫文章。
- 它可能會為應用程式的開發人員提供可用來進行更正的資訊。
- 建議您遵循適當的廠商或 Microsoft 支援服務。 當您連絡 Microsoft 支援服務 以取得更多協助時,請提供報告檔案以加速分析程式。 可能需要完整傾印檔案。
考量
以下是您應該考慮的一些因素。
AverageCallThreshold 登錄值
值 300 秒是大部分環境的適當閾值。 理想的值取決於特定環境。 若要確保儘快採取動作,但只有在發生合法問題時,請選取只有在有問題的情況下才超過的最小可能值。
TerminateProcess 登錄值
當發生高呼叫時間時終止進程,可能有助於 COM+ 元件自動從某些問題復原。 在高可用性很重要的環境中,這是理想的做法。 使用此功能時,請選取適當的 AverageCallThreshold
登錄值,以避免無意中終止進程。
DumpType 登錄值
您可以更快建立小型傾印檔案,並佔用比完整傾印檔案更少的磁碟空間。 不過,分析問題並不十分有用,因為它們經常缺少必要的數據。 Dllhost.exe進程的完整傾印檔案一般大小從 10 MB 到 50 MB 不等。 其實際大小取決於傾印進程的工作集大小。 檔案通常會在幾秒內產生。
傾印檔案選項
根據預設,傾印檔案會儲存在 %systemroot%\system32\com\dmp 目錄中。 使用 [ 映射傾印目錄 ] 方塊中的設定,並在 適當 COM+ 應用程式的 [傾印映射 數目上限] 區域中,控制位置與傾印檔案數目。
通話時間
COM+ 元件的呼叫時間是 COM+ 元件所有實例的執行平均。 呼叫時間是由 COM+ 系統應用程式計算,並顯示在 元件服務 MMC 嵌入式管理單元中狀態檢視的 [呼叫時間] 資料 行中。