如何捕获正在泄漏内存的进程的内存转储

BizTalk 进程 BTSNTSvc.exe 定义为在内存无法释放不再需要的内存时发生内存泄漏,从而减少一段时间内的可用内存量。 可以通过查看任务管理器中可用的“进程”选项卡的“Mem 使用情况”列下的值来确定进程的内存使用情况。 如果进程在一段时间内继续消耗内存而不释放内存,则整体系统性能将受到不利影响。

本主题包含关于如何捕获 BizTalk 进程的内存转储的说明,该进程被怀疑泄漏内存。可以使用规则捕获内存转储,也可以手动执行此操作。 如果内存泄漏的发生不可预测,请使用捕获内存转储的手动方法。

使用规则捕获内存泄漏进程的内存转储

  1. 开始所有程序IIS 诊断调试诊断工具调试诊断工具 1.0启动调试诊断工具。

  2. 如果未显示“选择规则类型”对话框,请单击“工具”菜单,选择“规则操作”,然后单击“添加规则”以显示“添加规则向导”。

  3. “选择规则类型”对话框中选择“内存和处理泄漏”选项,然后单击“下一步”。

  4. 选择涉嫌泄漏内存的 BTSNTSvc.exe 进程,然后单击“ 下一步”。

  5. “配置跟踪持续时间 ”对话框中,执行以下步骤:

    1. 如果观察到的进程内存增长立即发生,请在 激活规则时立即选中“启动内存跟踪”选项。 如果观察到的进程内存增长不会立即发生,请在 “预热时间 ”文本框中指定适当的分钟数,之后将启动内存跟踪。

      注释

      如果在将特定组件加载到内存时导致内存泄漏,例如 BizTalk 业务流程引用外部组件,则观察到的进程内存增长可能不会立即发生。

    2. “跟踪时间 ”文本框中指定适当的分钟数,之后内存跟踪将停止。 这应该是足够长的几分钟,以便重现内存泄漏。 在这个时间段结束后,将会捕获该进程的内存转储。

    3. 选中“ 自动创建崩溃规则”选项,以获取意外进程退出时的用户转储

    4. 单击 “下一步”

  6. “选择转储位置和规则名称 ”对话框中,单击“ 下一步 ”接受默认值。

  7. 在“ 规则完成 ”对话框中,单击“ 完成 ”以接受 “立即激活规则”的默认值。

  8. 默认情况下,在配置跟踪持续时间对话框中指定的时间间隔过后,进程内存转储将保存到本地计算机的 \Program Files\IIS Resources\DebugDiag\Logs\<name of crash rule> directory。

手动捕获发生内存泄漏的进程的内存转储

  1. 开始所有程序IIS 诊断调试诊断工具调试诊断工具 1.0启动调试诊断工具。

  2. 如果显示“添加 规则向导”的“选择规则类型 ”对话框,请单击“ 取消”。

  3. 单击以选择调试诊断工具的“ 进程 ”选项卡。

  4. 右键单击涉嫌泄漏内存的 BTSNTSvc.exe 进程,然后单击“监视泄漏”。

  5. 监视 任务管理器 中进程的内存使用情况,以及当进程的内存使用率接近 60-80% BizTalk 计算机上可用的内存时;右键单击进程并选择“ 创建完整用户dump”选项,手动捕获进程的内存转储。

  6. 默认情况下,进程的内存转储将保存到本地计算机的 \Program Files\IIS Resources\DebugDiag\Logs\Misc\ 目录。

另请参阅

如何使用调试诊断工具分析内存转储文件