COM+ 支援在 Windows Server 中自動收集進程傾印檔案和進程終止

適用於:Windows 10 的 Windows SDK
原始 KB 編號: 910904

簡介

當 COM+ 元件發生異常高的呼叫時間時,系統會記錄事件。 事件記錄檔會識別發生問題的 COM+ 元件。 此外,事件記錄檔會提及本文 (910904) 。 系統可以設定為執行下列其中一個或兩個動作:

  • 自動收集進程傾印檔案,以進行問題的根本原因分析。
  • 結束此程式,以協助您從問題中復原,而不需要手動介入。

系統收集傾印檔案之後,請使用偵錯 診斷工具 (DebugDiag) 產生描述問題的報表,並提供已知的解決方案。

預設行為

請試想下列案例:

  • COM+ 元件的呼叫時間超過 10 分鐘。
  • 當載入這個長時間執行之 COM+ 元件的應用程式正在執行時,您會開啟元件服務 Microsoft Management Console (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. 若要解決此問題,請遵循報表的 Recommendations 區段中 提供的指引。 報表的這個區段可能會建議下列事項:

    • 它可能會引導您前往描述已知問題的 Microsoft 知識庫文章。
    • 它可能會為應用程式的開發人員提供可用來進行更正的資訊。
    • 建議您與適當的廠商或 Microsoft 支援服務 進行追蹤。 當您連絡 Microsoft 支援服務 以取得更多說明時,請提供報表檔案以加速分析程式。 可能也需要完整的傾印檔案。

考量

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

AverageCallThreshold 登錄值

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

TerminateProcess 登錄值

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

DumpType 登錄值

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

傾印檔案選項

根據預設,傾印檔案會儲存在 %systemroot%\system32\com\dmp 目錄中。 使用 [ 影像傾印目錄] 方塊中的設定,以及適當 COM+ 應用程式的 [ 傾印影像數目上限 ] 區域底下的設定,來控制位置和傾印檔案數目。

通話時間

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