具有相同 DLL 的多个网站的 Azure 网站内存使用情况

Azure Websites Memory Usage For Multiple Websites with same DLLs

我们正在将一系列云服务 Web 角色移动到 Azure 网站 - 目前 运行 在应用服务 plan/pricing 层 - 标准 1 介质。

这些网站都是相同的,在某些时候我们将重新编写代码库以正确地进行多租户。但是,我们目前将它们作为多个网站托管在一个 Azure 网络托管计划中。

就内存使用而言,Azure 是否会共享相同的 Dll,例如所有 Nuget packages/core 应用程序 Dll?或者我们是否需要足够的内存来为每个网站加载每个 Dll 的副本?实际上,我希望分享您可以跨 AppPools 共享通用程序集。

我看到有人提到 MS 正在添加到 IIS 中以支持共享主机提供商的更高密度。我相信 .Net 4.5 添加了对 interned Dll 的支持。是否有任何设置等会影响 Azure 如何处理这种情况?我们目前 运行 内存消耗为 3.5GB 内存的 94%,想了解我们是否需要尽快扩展。我希望 Azure 能够在幕后做一些事情,因为显然 MS 想要最大化密度。

每个 WebApp 都被应用程序池隔离,因此如果您有同一站点的多个副本,即使它们完全相同,它们也会将自己的程序集副本加载到内存中。

由于服务的多租户性质,还有安全沙箱,因此实习不会对付它。

要监控内存使用情况,您可以查看应用服务计划。进程资源管理器也很有用(WebApp>工具>进程资源管理器)