【问题标题】:Azure Websites Memory Usage For Multiple Websites with same DLLs具有相同 DLL 的多个网站的 Azure 网站内存使用情况
【发布时间】:2015-05-27 23:52:57
【问题描述】:

我们正在将一系列云服务 Web 角色转移到 Azure 网站 - 目前在应用服务计划/定价层 - 标准 1 中运行。

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

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

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

【问题讨论】:

  • 一个有价值的问题,您是否尝试在您的任何网络角色中使用此 aspnet_intern.exe。我不认为微软在网站上实习,因为它的共享托管模式。
  • 没有。我们从来不需要 aspnet_intern on web 角色,因为每个客户都有自己的 web 角色。对于我们没有使用共享托管选项的网站。我不知道 MS 内部是如何设置的
  • 我刚刚在推特上将此消息发给了 Scott Hanselman 和 Vettorio。等他们回复吧,他们是我能想到的MS专家
  • 好电话 - 如果 Scott Hanselman 不知道很棒的功能,谁会:)

标签: iis azure dll azure-web-app-service multi-tenant


【解决方案1】:

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

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

要监控内存使用情况,您可以查看应用服务计划。进程浏览器(WebApp>tools>process explorer)也很有用

【讨论】:

  • 如果我有一个大型预留服务器,那不是我的吗?还是其他用户共享该 IIS 实例?如果不是不能实习?我想这可能不是一个常见的场景。
  • 我目前有 238 个网站都共享多个 dll(其中 32 个),如果能够“实习”这些将是完美的。我发现我必须将每个网络服务器保持在 80% 的内存,否则在高峰时间它们会耗尽并且所有站点都没有响应。我为此创建了一个天蓝色的反馈:feedback.azure.com/forums/169385-web-apps-formerly-websites/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-05
  • 1970-01-01
  • 1970-01-01
  • 2014-02-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多