【问题标题】:Can the memory utilisation in App Services be improved应用服务中的内存利用率可以提高吗
【发布时间】:2017-05-28 13:40:51
【问题描述】:

我有一个相当简单的 Web 应用程序在 Azure 的应用服务计划中运行,在 B1 服务计划中。该计划提供 1 个 CPU 和 1.75GB 的 RAM。

CPU 使用率永远不会超过 5%,内存使用率永远不会低于 52%。

我确实停止了计划中运行的唯一站点,并且内存使用量根本没有下降。我创建了一个新的应用服务计划并让它运行了一天,在这段时间内最小内存使用率为 50%,其中没有运行任何应用程序。

我知道造成这种情况的原因可能是操作系统和在操作系统上运行的服务,但获得我支付的 50% 的内存非常令人沮丧 - 我的应用程序会随着时间的推移而增长。

我可以对计划本身做些什么来降低内存消耗?

关于应用程序,除了禁用我不需要的功能(如 Python 和 PHP),并将应用程序设置为 32 位之外,还有其他选项吗?

【问题讨论】:

  • 你检查过那块内存是干什么用的吗?如果它被 IIS 使用怎么办?为什么你认为你甚至没有部署你的应用程序就有问题?
  • @PanagiotisKanavos 好吧,我猜正是因为他没有部署应用程序并且 50% 的内存已经消失。
  • @PanagiotisKanavos 据我所知,您只能在应用程序上看到 Process Explorer,而不是服务计划。我没有说有问题,但是在没有任何应用程序的情况下丢失 50% 的内存并不是一个很好的价值主张。
  • Process Explorer 显示所有应用程序和服务。如果您可以在 VM 内部进行 RDP 并运行 Process Explorer,则可以查看正在使用内存的内容。另一方面 - 它一个托管虚拟机,这意味着它与同一台服务器上的其他虚拟机共享内存,并具有过度配置。所有主机都使用虚拟内存膨胀来强制非活动虚拟机释放内存。独占 RAM 需要更昂贵的计划。
  • 换句话说,不要试图将您的虚拟机视为物理机。首先部署并测量您的应用程序,不要过早假设存在内存问题

标签: .net azure azure-web-app-service azure-app-service-plans


【解决方案1】:

这就是这些服务的工作方式。 50% 用于运行操作系统(可能已经很好地调整为尽可能少地运行)。可能值得一提的是,当你扩大规模时,这个数字不会保持在 50%。如果我们按照“基础设施”占用 900mb 的原则工作,那么当您扩大规模时,这个数字很可能会保持不变。因此,加倍至 3.5gb 模型将意味着操作系统将占用 25% 的可用内存。

如果您不访问 *.scm.azurewebsites.net 站点,那么它不会占用任何内存(因为它不会被加载),并且如果您与其他应用共享应用服务计划然后禁用“始终开启”将意味着您的应用在不使用时不会占用任何内存。

据我所知,您可以使用的可用内存中唯一不包含操作系统的服务是 Azure Functions / AWS Lambda

【讨论】:

    猜你喜欢
    • 2016-05-13
    • 2012-03-06
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    • 2020-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多