如何调试Azure Web App内存泄漏?

时间:2016-03-16 08:55:30

标签: debugging azure memory-leaks azure-web-sites memory-dump

SCM门户中有一个非常适合CPU的Start Profiling按钮。

enter image description here

然后有一些来源引用Download GC Dump按钮: https://stackoverflow.com/a/27987593/647845

但这似乎不再可用了。

然后是Download memory dump按钮。 但是现在我无法弄清楚如何/我是否能够看到我所使用的类型/ Refcount / Size 统计数据。

在C#Azure Web App中查找内存泄漏的推荐方法是什么?

5 个答案:

答案 0 :(得分:8)

尝试使用Kudu控制台。 转到https://[sitename].scm.azurewebsites.net/support 单击分析 - > Dignostics - >设置。确保选中内存转储 然后单击Dignose Now。 这仅适用于基本计划及以上(不适用于免费计划) 过了一段时间,你会得到转储 enter image description here 使用Visual Studio打开下载的文件,然后选择" Debug managed memory"。 然后,您可以查看详细信息。 enter image description here

答案 1 :(得分:2)

我看到这个帖子已经很老了,但由于我遇到了同样的问题,并且在此期间天蓝色门户发生了很大变化,我想在这里发布一些更新。

此微软开发博客提供了有关该主题的快速概述:https://devblogs.microsoft.com/premier-developer/collect-and-automate-diagnostic-actions-with-azure-app-services/

通过导航到 Azure 门户中的应用服务,选择诊断和解决问题,我设法进行了内存泄漏分析 和之后的 诊断工具 磁贴。现在您应该会看到一个收集内存转储磁贴,您可以在其中配置一个 blob 存储来创建您的内存转储以将其保存。

之后我下载了转储并使用 Visual Studio 来分析问题。

答案 2 :(得分:0)

您可以使用Kudu控制台下载内存转储并使用DebugDiag对其进行分析,您可以有多个内存转储,一个在发生泄漏之前,一个在其中,一个在之后,之后您可以比较并查看哪些对象是规模越来越大而且没有被处理

答案 3 :(得分:0)

很遗憾,kudu支持页面已被弃用。您现在可以在Diagnose and solve problems下找到它: Screenshot of the azure portal

下载转储文件后,请在Visual Studio中打开它们,然后按照Grandhali的建议选择“调试托管内存”。

答案 4 :(得分:-2)

从Visual Studio远程分析Azure Web App可能是最佳选择。

https://azure.microsoft.com/en-us/blog/remote-profiling-support-in-azure-app-service/