首页 > 解决方案 > 如何在不回收的情况下获取托管在 IIS 中的 Web 应用程序的完整小型转储?

问题描述

我们在生产中遇到了一个奇怪的情况,需要获取完整的内存转储。但是,写出完整的小型转储需要太多时间。因此,IIS 会在进行转储时回收该进程。

我们无法在 IIS 中增加此超时,因为这是一个实时 pod,我们不希望场中的其他 Web 服务器受到影响。

是否有可能以某种方式让 IIS 知道这个特定的进程不应该被回收?或者任何其他方式能够在我们的情况下采取完整的小型转储?

minidump 被写入本地文件系统。

编辑 1

这不是我的其他问题的重复如何在定期回收的农场中运行具体异常的 Web 应用程序的小型转储?因为挑战不同。在这个问题中,我处理了 IIS 由于已进行转储而导致不活动而终止 Web 进程的问题。在另一个问题中,问题是我们无法附加到 Web 进程并等待异常 - 该进程将在某一时刻被回收,我们将不得不重新附加。这不是一个对人类友好的过程。此外,它必须在场中的所有机器上复制。再次,对人类不友好。

标签: iisweb-applicationsdumpcoredumpminidump

解决方案


  1. AppPool -> 高级设置 -> 进程模型 -> Ping Enabled = false
  2. 进行进程内存转储(转储到系统上最快的驱动器)
  3. AppPool -> 高级设置 -> 进程模型 -> Ping Enabled = true

推荐阅读