Windows 容器中的内存使用问题

问题描述 投票:0回答:1

我正在尝试在 Windows 容器中托管 .NET 4.8 Web 应用程序。该应用程序使用 COM 互操作与一些旧组件进行交互。

我从通过启用了 Docker 的 Visual Studio 创建的 .NET 4.8 Web API 项目开始。在我的机器上一切都运行良好。我能够通过 JMeter/POSTMAN 发送数百个请求而不会出现错误,并且我的机器上的内存使用量似乎不超过 1GB。

当我在 Azure 应用服务中托管容器时,它在 10-11 个请求后抛出内存不足异常。这种情况相当一致地发生。

我尝试扩大应用服务计划。我发现默认情况下,Azure 应用服务中的 Windows 容器内存限制为 1.5 GB,因此我使用应用程序设置将此值增加到 10GB,并且我能够在部署中心确认该容器是使用 10GB 内存创建的。内存,但它仍然很快就会耗尽内存。

我最终能够在自己的机器上重现此行为,事实证明,无论我将内存限制设置多高(我已经尝试过 20 GB)...使用“-m”参数指定的任何值都是导致性能不可接受。

简而言之:

docker run -m 25GB -P <containername>:<tag>

不起作用,但是:

docker run -P <containername>:<tag>

有效。

我猜这个 -m 参数在幕后发生的事情一定比表面上看到的更多。

docker 文档还有一些与内存使用相关的其他参数,但是当我传递这些标志时,我收到错误消息,Windows 容器不支持它们。

有什么想法吗?此时,我可能不得不放弃使用 Azure 应用服务,而将容器托管在我自己的 VM 中,以便我可以控制完整运行命令并确保不传递 -m 参数。

asp.net windows azure-web-app-service containers
1个回答
0
投票

在 Azure 应用服务中,我们使用 Hyper-V 隔离运行,因此要将其与应用服务进行比较,请使用 --isolation=hyperv 选项。

在 Azure 应用服务中,每个容器将以最小 1GB 启动,但您可以使用应用程序设置 WEBSITE_MEMORY_LIMIT_MB 来控制要从主机共享到容器的内存量。

如果问题仍然存在,请开具支持票,我们将为您提供帮助:

https://learn.microsoft.com/en-us/azure/azure-portal/supportability/how-to-create-azure-support-request

© www.soinside.com 2019 - 2024. All rights reserved.