目前,我正在寻找一种解决方案,可以让我在生产环境中监视 .NET Windows 服务应用程序并收集内存转储。我想根据一些特定的阈值,随意和应用程序崩溃来收集它们。我知道实现这一目标的各种方法,例如:
- 调试诊断
- 过程转储
- 通过 WER
- 广告加
- WinDbg 等
一些方法有助于在崩溃期间进行收集,例如选项 #3,而其他方法可以根据性能计数器触发,例如 #1 和 #2。任何非侵入式调试器都可以帮助我完成收集,但我不确定附加一个调试器会对性能产生什么影响。例如,如果我使用带有 -e 开关的 Procdump 来收集未处理异常的内存转储,那么受监视应用程序的开销是多少?请记住,我指的是生产环境。
如果您能指出一个来源或方法来解释附加非侵入式调试器对内存转储收集的性能影响,我将不胜感激。理想情况下,这将是一个量化的衡量标准,尽管它超出了我的预期。
PS:我不是指内存转储写入磁盘所需的时间,应用程序完全冻结。那是另一回事。