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

如果 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。

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

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

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

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

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

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

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

另请参阅

如何使用调试诊断分析内存转储