分享方式:


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+ 應用程式屬性的 [傾印] 索引卷標上,核取 [啟用應用程式錯誤上的映射傾印] 複選框。

分析傾印檔案

若要分析傾印檔案,請遵循下列步驟:

  1. 下載並安裝偵錯診斷工具(DebugDiag)。

  2. 依照下列步驟,使用偵錯診斷工具來產生傾印檔案的分析報告:

    1. 從 [開始] 功能表執行DebugDiag Analysis 應用程式。
    2. 選取 [ 設定],然後選取 [ 喜好設定 ] 索引標籤。
    3. 請確定已核取 [符號搜尋路徑] 欄位中的 [Microsoft公用符號伺服器] 選項,然後選取 [上一頁]。
    4. 選取 [ 預設分析\ CrashHangAnalysis ] 選項。
    5. 選取 [ 新增數據檔]。
    6. 選取您想要分析的傾印檔案。
    7. 選取開始分析

    產生的 HTML 報表會顯示在桌面上的新Microsoft Internet Explorer 視窗中,並儲存至 DebugDiag Reports 目錄。 此目錄的預設位置是 %USERPROFILE%\Documents\DebugDiag\Reports

  3. 若要解決此問題,請遵循報告的建議一節中提供的指引。 報表的這個區段可能會建議下列事項:

    • 它可能會將您導向至描述已知問題的Microsoft知識庫文章。
    • 它可能會為應用程式的開發人員提供可用來進行更正的資訊。
    • 建議您遵循適當的廠商或 Microsoft 支援服務。 當您連絡 Microsoft 支援服務 以取得更多協助時,請提供報告檔案以加速分析程式。 可能需要完整傾印檔案。

考量

以下是您應該考慮的一些因素。

AverageCallThreshold 登錄值

值 300 秒是大部分環境的適當閾值。 理想的值取決於特定環境。 若要確保儘快採取動作,但只有在發生合法問題時,請選取只有在有問題的情況下才超過的最小可能值。

TerminateProcess 登錄值

當發生高呼叫時間時終止進程,可能有助於 COM+ 元件自動從某些問題復原。 在高可用性很重要的環境中,這是理想的做法。 使用此功能時,請選取適當的 AverageCallThreshold 登錄值,以避免無意中終止進程。

DumpType 登錄值

您可以更快建立小型傾印檔案,並佔用比完整傾印檔案更少的磁碟空間。 不過,分析問題並不十分有用,因為它們經常缺少必要的數據。 Dllhost.exe進程的完整傾印檔案一般大小從 10 MB 到 50 MB 不等。 其實際大小取決於傾印進程的工作集大小。 檔案通常會在幾秒內產生。

傾印檔案選項

根據預設,傾印檔案會儲存在 %systemroot%\system32\com\dmp 目錄中。 使用 [ 映射傾印目錄 ] 方塊中的設定,並在 適當 COM+ 應用程式的 [傾印映射 數目上限] 區域中,控制位置與傾印檔案數目。

通話時間

COM+ 元件的呼叫時間是 COM+ 元件所有實例的執行平均。 呼叫時間是由 COM+ 系統應用程式計算,並顯示在 元件服務 MMC 嵌入式管理單元中狀態檢視的 [呼叫時間] 資料 行中。