当前位置: 首页 > 知识库问答 >
问题:

Azure应用程序服务计划上有两个应用程序的100%内存使用率-工作集使用10gb

苍温文
2023-03-14

我有一个14gb内存的应用程序服务计划,它应该足以满足我的应用程序的需要。有两个应用程序服务在其上运行,每一个都是相同的-这些服务的私有内存消耗量徘徊在1gb左右,但在高使用率期间可能达到4gb。一个应用程序的使用模式比另一个应用程序更重。

最近,在高使用率期间,我注意到大量使用的服务可能会变得无响应,而在应用程序服务计划中,内存使用率保持在100%。

高流量服务正在使用4gb的专用内存,并开始大幅减速。当我转到/scm时/ProcessExplorer/page,我可以看到低流量服务使用了1gb的专用内存和10gb的“工作集”。

据我所知,至少在一台机器上,当另一个进程需要内存时,应该释放工作集。当两个应用程序服务共享一个计划时,这种情况会自然发生吗?

在我看来,低流量实例上的工作集没有得到释放,无法满足高流量应用程序服务的需求。

如果确实如此,简单的解决方法是将它们移动到单独的应用服务计划中,每个应用服务计划都有7GB的内存。然而,这似乎可能只是在转移问题——还有人注意到单个应用服务计划上的多个应用程序存在类似问题吗?据我所知,这些不应该相互干扰到它们都需要分开的程度。还是我诊断错了?

共有2个答案

东门城
2023-03-14

最终,我们通过缓解措施解决了这一问题,而不是找到根本原因。

几个月前,我们找到了一种缓解以前内存问题的策略,就是每晚使用powershell脚本重新启动服务器。这似乎可以防止内存随着时间的推移而积累,只需花费几秒钟的停机时间。我们的系统没有太多的夜间流量,因为我们的用户都位于同一地理位置。

然而,我们最近发现,夜间重启报告“成功”,但实际上由于凭据过期,每晚都会失败。这意味着,在我发布的问题中,我们遇到的内存问题实际上由于服务器数周的正常运行而加剧。恢复一夜之间的重启解决了我们所看到的内存问题,我们肯定再也看不到我们的系统使用10gb了。

如果他们再次抬头,我们将调查记忆问题。KetanChawda MSFT关于使用内存转储分析内存使用情况的建议将在需要时用于本次调查。

商勇
2023-03-14

在某些高内存消耗的情况下,应用程序可能确实需要更多的计算资源。在这种情况下,请考虑扩展到更高的服务层,以便应用程序获得所需的所有资源。其他时候,代码中的错误可能会导致内存泄漏。编码实践也可能会增加内存消耗。深入了解触发高内存消耗的原因是一个由两部分组成的过程。首先,创建一个进程转储,然后分析进程转储。Azure站点扩展库中的崩溃诊断程序可以有效地执行这两个步骤。有关详细信息。

请参阅捕获和分析转储文件以了解Web应用程序的间歇性高内存。

 类似资料:
  • 我正在对Azure应用程序服务中托管的API进行性能测试。每当工作内存集图中出现峰值时,我的API响应时间就会增加。但我的应用程序服务计划显示,只有一个实例在运行,内存就占到了50-55%。 你能向我澄清一下,为什么每次“工作内存集”出现峰值时,API响应时间都在增加,即使我的应用程序服务计划内存只有50%左右? 响应时间图 工作记忆集图

  • Azure应用程序服务(特别是应用程序服务计划)是否提供内存抽象? https://azure.microsoft.com/en-us/pricing/details/app-service/ 如果我创建一个具有2个标准倾斜实例(1个CPU 1.75 giga字节内存)的应用程序服务,这是否意味着我有2*1.75 giga字节内存可供我的应用程序使用?例如,我可以在该计划中创建一个堆大小为2 gi

  • 我正在寻找监视应用服务计划内存使用情况作为grafana的百分比,但我看不到此指标在日志分析中的位置,我可以从应用服务发送指标,但不能发送日志分析计划。 是否有任何方法可以在azure之外公开此度量?

  • 我在Azure中创建了一个应用程序服务计划,在该服务计划下运行了14个应用程序。现在,特定的服务计划有了一个标准的定价层和一个大型的实例,即S3 S3内核:4 RAM:7 GB存储:50 GB。 这14个应用程序是否共享可用的内存和存储空间,因此14个应用程序只有7G,14个应用程序也只有50G的存储空间?如果是这样的话,我如何才能看到每个人在Azure中消耗了多少?

  • 我有一个nodejs应用程序,它只不过是一个使用微软botbuilder框架构建的机器人。我创建了azure应用程序服务来托管此应用程序。我想找到一种方法,将所有应用程序日志和web服务器日志(如果可能的话)持久化到某个持久化存储中。就像本地web应用程序一样,我们可以在应用程序服务器上查找日志 在做了一些研究之后,我找到了微软关于这方面的官方文件,但看起来它有以下局限性。 我们不能使用应用程序服

  • 我认为Azure的优点之一是,我可以根据我希望服务何时可用来打开和关闭服务。 然而,我看不到如何暂停我的应用程序服务计划。有可能吗? 我想使用S1层,这样我就可以使用它提供的东西。然而,当我不使用它时,我希望能够暂停成本积累。 我从应用程序服务定价帮助中看到,即使某个应用程序处于停止状态,仍将为其计费。 然而,这种联系也清楚地表明,我只为我使用的东西付费。那么这是如何运作的呢?