Azure 应用程序服务计划耗尽临时存储空间

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

我们遇到了一个非常特殊的问题。在 P3v2 / P3v3 应用服务计划中运行约 30 个应用服务(临时存储分别为 61/140GB)。

临时存储会逐渐填满,除非我们更改计划(降低或提高,这会有效地重新启动所有服务)或者重新启动所有应用程序服务。这是推荐的短期补救措施。

在诊断刀片“临时文件使用情况”中 - 图表显示的数据非常有限 - 只有占用空间的“机器” - 在我们的例子中,它是一台机器,因此我们只能监视那里的峰值。没有任何关于 30 个服务中哪一个正在使用临时存储的信息。

我们还尝试了一些 Kudu 魔法 - 迭代所有应用程序并执行命令,以便它们可以报告磁盘使用情况。所有这些都报告使用量非常少(使用了 0.05-0.4gb)。

因此,根据诊断日志,我们最终会遇到使用 130GB 临时内存的情况。我们运行脚本和应用程序报告总共使用了约 3-4GB 的临时内存。为什么不匹配?

我们使用的一些脚本(我们将它们触发到 Kudu 命令 api:

$apiUrl = "https://$($app.Name).scm.azurewebsites.net/api/command"
$command = "powershell -command ""[math]::Round((Get-ChildItem -Path C:\local -Recurse | Measure-Object -Property Length -Sum).Sum / 1GB, 2)"""
"du -sh D:\local\Temp"

我的理论之一是存在一些锁定的文件(即创建然后删除,但仍然被进程锁定)。但我们如何确定是否没有命令正确报告数据。

另一个猜测是,由于 SCM 分离配置/标志 - WEBSITE_DISABLE_SCM_SEPARATION,我们得到了一些隐藏在 temp 之外的数据 下一步可能是禁用分离,然后运行命令,但它是遗留模式,似乎不适合在产品环境中启用。

我检查了一些参考文献来寻找想法,但到目前为止没有一个能让我得出明确的结论: 应用程序服务临时文件限制 azure 应用程序服务文件系统如何工作

azure azure-web-app-service temporary-files azure-appservice azure-app-service-plans
1个回答
0
投票

您无法增加 Azure Web 应用程序中的临时文件夹大小,因为它有其限制,唯一的选择是扩展您的应用程序,并且各种应用程序服务层具有可用于 Web 应用程序的各种磁盘大小。请参阅 Venkatesh Dodda 的SO 答案

您的应用程序服务中正常作业执行期间似乎可能会生成临时文件和文件夹。通常,这些文件是暂时的,在用户可见之前就会被删除,但在极少数情况下,它们可能会暂时保留。这些文件不被视为用户存储的一部分或计费,但如果您的作业逻辑涉及枚举文件夹中的所有文件,则它们可能会导致问题,从而因存在这些临时文件而导致意外失败或错误。

WEBSITE_DISABLE_SCM_SEPARATION
配置可能会影响应用服务中某些文件的存储或访问方式。出于诊断目的暂时禁用它可能是一种有效的方法,尽管正如您所提到的,这不是生产环境的理想解决方案。

如果您想在不重新启动网络应用程序的情况下清除临时数据,您可以参考MS Q&A论坛答案,作者:Niharika Koneru

对于 Windows Web 应用程序:-

del /q/f/s %TEMP%*

enter image description here

对于 Linux Web 应用程序:-

rm -rf /tmp/*

enter image description here

运行这些命令后,检查是否有任何临时文件仍然存在。

您还可以通过访问诊断和解决 Web 应用程序的问题并检查磁盘使用情况和运行进程来深入了解您的磁盘存储并解决它:-

enter image description here

参考:-

了解 Azure 应用服务文件系统·projectkudu/kudu Wiki (github.com)

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