heartstill

博客园 首页 新随笔 联系 订阅 管理
文章编号: 910904 - 最后修改: 2009年7月23日 - 修订: 3.0

在 COM + 为支持自动收集进程转储文件和进程终止的 Windows Server 2003 中的功能的更改

本页

简介
本文介绍了在功能的 Microsoft COM + (组件服务) 在 Microsoft Windows Server 2003 中的更改。 默认状态下,当 C...

本文介绍了在功能的 Microsoft COM + (组件服务) 在 Microsoft Windows Server 2003 中的更改。 默认状态下,当 COM + 组件遇到一个很高的调用的时间为 COM + 组件遇到该问题的记录没有信息。此外,从问题中恢复尝试不执行任何操作。

您应用 Microsoft Windows Server 2003 Service Pack 2 (SP2) 后,COM + 组件遇到一个很高的调用时间时,会记录一个事件。在事件日志标识该 COM + 组件遇到该问题。此外,事件日志中提到了这篇 Microsoft 知识库文章。 您可以配置系统以执行下列操作之一或全部:
  • 自动收集用于问题的根本原因分析的进程转储文件。
  • 终止此过程以帮助从没有手动干预的情况下问题中恢复。
系统收集转储文件后,您可以使用调试诊断工具 (DebugDiag) 生成一个报告,说明此问题。此外,此报表描述可能的解决方案出现此问题,如果它们都已知的。

更多信息
默认行为请考虑以下情形: 您应用了 Windows Server 2003 SP2。 COM + 组件的调用时间超过 10 分钟。 仍然运行承载此长时间运行 C...

默认行为

请考虑以下情形:
  • 您应用了 Windows Server 2003 SP2。
  • COM + 组件的调用时间超过 10 分钟。
  • 仍然运行承载此长时间运行 COM + 组件的应用程序,时打开组件服务 Microsoft 管理控制台 (MMC) 管理单元。
在这种情况下是在应用程序日志中记录以下事件:

事件类型: 信息
COM + 事件源:
事件类别: (117)
事件 ID: 782
描述: 平均呼叫持续时间超过 10 分钟。如果这不是预期的行为,请参阅文章 910904 Microsoft 知识库中的详细信息的 http://support.microsoft.com 在如何使用 COM + AutoDump 功能来自动生成转储文件和/或终止进程,如果再次出现该问题。
服务器应用程序 ID: {YourAppID}
服务器应用程序实例 ID: {YourAppInstanceID}
服务器应用程序名称: YourAppName

配置选项

重要此分区、 方法,或任务包含告诉您如何修改注册表的步骤。但是,如果注册表修改不当可能会出现严重问题。因此,请确保您仔细按照这些步骤。附加的保护注册表之前先备份您对其进行修改。然后,您可以在出现问题时还原注册表。有关如何备份和还原注册表的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
322756  (http://support.microsoft.com/kb/322756/ ) 如何备份和还原在 Windows 注册表


您可以配置系统以检测到一个长时间运行 COM + 组件时,请执行下列操作之一或全部:
  • 自动收集进程转储文件。
  • 终止进程。
若要执行此操作使用以下注册表值:
值名称: AverageCallThreshold
数据类型: REG_DWORD
说明: 阈值以秒为单位时将采取相应的操作
默认值: 0

值名称: DumpType
数据类型: REG_DWORD
说明:
0 = 生成完全转储文件
1 = 生成一个小型转储文件
2 = 无转储文件
默认值: 0

值名称: 终止
数据类型: 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. 下载并安装适当的版本的 Microsoft Internet Information Services (IIS) 诊断工具包。有关如何获取 IIS 诊断工具包的详细信息请访问下面的 Microsoft 网站:
    http://www.microsoft.com/windowsserver2003/iis/diagnostictools/default.mspx (http://www.microsoft.com/windowsserver2003/iis/diagnostictools/default.mspx)
  2. 使用 IIS 诊断工具包的调试诊断工具 (DebugDiag) 生成转储文件的分析报告。若要这样做,请按照下列步骤操作:
    1. 单击 开始,指向 程序,指向 IIS 诊断 (32 位)、 指向 调试诊断工具,然后单击 调试诊断工具 1.0
    2. 如果将打开 选择规则类型 对话框中单击 取消
    3. 工具 菜单上单击 选项和设置
    4. 单击 文件夹和搜索路径 选项卡。
    5. 符号搜索路径的分析 框中键入 srv*C:\symbols\*http://msdl.microsoft.com/download/symbols
    6. 单击 高级分析 选项卡。
    7. 可用的分析脚本 列表中单击 $ IISAnalysis.asp
    8. 单击 添加数据文件
    9. 选择您要分析,该转储文件,然后单击 确定
    10. 单击 开始分析

      在新的 Microsoft Internet 浏览器窗口在桌面上显示生成的 HTML 报表。此外,此报表保存到 DebugDiag 报表目录中。 此目录的默认位置是 Files\IIS Resources\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 管理单元中状态视图的 通话时间 (毫秒) 列中。
posted on 2011-01-26 17:40  开始测试  阅读(519)  评论(0编辑  收藏  举报