gpt4 book ai didi

azure - 确定 Azure Web 角色(Windows Azure 加速器)中的非托管内存泄漏

转载 作者:行者123 更新时间:2023-12-02 08:09:11 25 4
gpt4 key购买 nike

我们正在使用现已弃用的 Windows Azure Accelerator将多个应用程序部署到 Windows Azure Web 角色。我们注意到 WAIISHost.exe 进程中存在大量内存泄漏 - 它当前消耗 2.5GB RAM(在大型 Azure 实例上)。一周前,它的大小为 1.5GB,因此可以肯定地说它每周泄漏一次演出。

我们查看了内存转储,发现泄漏似乎是非托管的 - 在 WinDBG 中使用 SOS 发现托管堆不超过 50MB。

我们使用了 heap_stat.py WinDBG 扩展显示大部分分配的对象来自nativerd dll(我认为它是一个内部基础设施库)。以下是 !py heap_stat.py -stat 显示的内容:

Statistics:

                                     Type name         Count  Size
nativerd!SCHEMA_ATTRIBUTE 8127384 Unknown
nativerd!ATTRIBUTE_VALUE 8127037 Unknown
nativerd!SCHEMA_ELEMENT 2032263 Unknown
nativerd!CONFIG_ELEMENT 1112616 Unknown
nativerd!NAMED_ENTRY_KEY 99967 Unknown
nativerd!DICTIONARY_LIST 54152 Unknown
nativerd!DUPLICATE_TABLE 11654 Unknown

在任何这些对象上运行 !heap -p -a 都没有显示太多附加信息:

0:000> !heap -p -a 000000002c1591e0

address 000000002c1591e0 found in
_HEAP @ 8d0000
HEAP_ENTRY Size Prev Flags UserPtr UserSize - state
000000002c1591e0 0014 0000 [00] 000000002c1591f0 00130 - (busy)
nativerd!SCHEMA_ELEMENT::`vftable'

此时,我们想知道调查 memleak 的下一步可能是什么。是否有任何其他有用的信息可以从内存转储中提取,或者我们应该采取其他方法,例如检查代码并尝试使用分析器在本地运行?

更新:我们的虚拟机运行的是 Windows Server 2008 R2 SP1。我们使用的是 Azure SDK 1.7。最后nativerd.dll的版本为7.5.7601.17855

最佳答案

我采用了已弃用的 Windows Azure Accelerator for Web Roles,并给予了它急需的关爱。它已升级以解决您在此处指出的问题,并升级到 Windows Server 2012(目前它针对 1.8 SDK,但如果您知道自己在做什么,它应该可以在 2.X 上正常工作)。

您可以在这里查看:https://github.com/MRCollective/AzureWebFarm

此提交中显示了针对您遇到的问题的立即修复:https://github.com/MRCollective/AzureWebFarm/commit/467516c77fa23b23fa94f98deb38679cfd08663a ,或者,如果您升级到 Windows Server 2012,则该问题不再存在。

我们最近制作的另一个选项在这里:https://github.com/MRCollective/AzureWebFarm.OctopusDeploy

关于azure - 确定 Azure Web 角色(Windows Azure 加速器)中的非托管内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21558713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com