azure - 内存使用量攀升,但仅限于应用服务计划
问题描述
我认为我们有内存泄漏,但我不知道是怎么回事。它似乎只发生在 App Service Plan上,而不是在其上运行的 App Services 上。这是 Azure 中的问题吗?有其他人经历过吗?详情如下。
...
每个应用服务计划(Prod 和 RC)有 2 个插槽,分别运行 3 个和 1 个实例。每个实例显示 3-5% 的内存使用率,由于流量要低得多,通常在 RC 上约为 3%,在生产中为 4-5%。
如果这有什么不同的话,我们将使用适用于 Node 8 的标准 Microsoft Linux 映像在 P1v2 层上运行 Linux 应用服务计划。我们有 3 个应用服务计划在使用中,并且都显示出同样的奇怪问题。在走 MS 支持路线之前,我想我会看看是否有其他人遇到过问题或可以指出要查看的地方。
似乎主机上的 docker 没有清除旧的运行实例,因此它们继续消耗内存,但我可能是错的。
编辑:我发现了这个,它解释了差异,但不是这个问题的原因。https://blogs.msdn.microsoft.com/benjaminperkins/2016/11/01/memory-metrics-for-an-azure-web-app-and-app-service-plan/
...
应用服务计划清楚地显示了泄漏。开始时的下降是在我因为内存超过 80% 而强行重新启动之后。
NewRelic 同意应用程序服务很好。忽略额外的主机,NewRelic 在一个图表上显示所有区域,Azure 图表针对单个区域。
解决方案
我发现 Kudu 容器会泄漏内存。如果您启动一个 bash shell 并运行top -b -n 1 -o %MEM
,您应该能够看到它的内存使用情况。在某些情况下,我看到mono
进程泄漏内存并且超时增长相当大。这已被 Microsoft 确认为错误,现在可能已修复。
推荐阅读
- list - Kotlin 列出对象以列出 ID
- c++ - 存在对 ffmpeg 的 libav 的调用时的静默崩溃
- json - 如何在labelme中用python打开json文件
- javascript - 如何使用JS获取本地文件夹中的文件名
- javascript - 无法使用反应路由器获取部分 URL?
- azure - 如何在 Azure Linux Function 的同一个项目中获取另一个文件夹
- python - 使用基于列范围的条件创建 pandas 列
- python - 如何使用 Django Rest 框架在 Header 中包含 Token
- python-3.x - 如何从 NLB 注销旧 IP 并使用 lambda 函数将其更新为新 IP?
- python - 为回归平衡面板数据