如何诊断 Azure WebJob 中的内存泄漏

How to diagnose a memory leak in an Azure WebJob

我怀疑我的 WebJob 可能存在内存泄漏,但我不确定如何明确证明我确实存在。我怀疑我可以通过转到Kudu管理控制台中的/processExplorer找到信息,启动一个配置文件,然后下载结果。但是,我不完全确定这是要走的路线,还是拿到文件后应该如何处理。

如有任何建议,我们将不胜感激。

I can find the information by going to the /processExplorer in the Kudu management console, start a profile, and download the results

获得.diagsession 文件后,您可以使用Visual Studio 打开它。您将看到 CPU 使用趋势,但内存数据不包含在此文件中。为了方便判断是否存在内存泄漏,以下步骤供您参考。

  1. 手动及时刷新kudu上的Process Explorer(例如每30秒一次)。
  2. 刷新Process Explorer后,需要记录私有内存和虚拟内存,用于诊断内存泄漏。点击进程名称后面的属性按钮,可以看到当前进程的私有内存和虚拟内存。
  3. 当你记录完足够的数据后,你需要比较虚拟内存和私有内存的增长速度。如果虚拟内存和私有内存增长都快,或者虚拟内存增长快于私有内存,说明存在内存泄漏。

如果您需要更多关于内存泄漏的信息,您可以从进程属性页面下载内存转储文件并使用WinDbg 查看它的详细信息。您还可以使用针对 Azure 网站的诊断即服务在线分析转储文件。有关如何使用它的更多信息。 Link以下内容供您参考。

DaaS – Diagnostics as a Service for Azure Web Sites