windows - 是否可以丢弃 Azure 角色主机并在同一主机上启动它而不进行清理?

标签 windows azure crash cloud reliability

假设我的 Azure 角色在 Windows 临时文件夹中创建了大量临时文件,但忘记删除它们。有时它会收到“无法创建临时文件”错误。假设一旦发生这种情况,我的角色代码会从 RoleEntryPoint.Run() 抛出异常,并且角色会重新启动。

我在这里谈论的并不是完美的 Azure 感知代码。我的角色可能会使用第三方黑盒代码,这些代码现在与 Azure 和“本地存储”无关,只会调用 System.IO.Path.GetTempPath() ,从而在某些非 Azure 中创建文件友好的位置。

问题是,如果角色在同一台主机上启动,并且临时文件夹没有被第三方清理,则该文件夹仍然充满文件,并且角色将无法运行。根据this answer可能会发生为我的角色保留本地更改的情况,这在上述场景中是一个大问题。

当角色重新启动时,是否可以保证重置本地更改(例如创建的临时文件)?如何确保启动的角色处于相当干净的状态?

最佳答案

在黄金镜像(基本 guest 操作系统 vhd)中进行新部署、升级和新扩展实例时,该角色会重置。通常,对于重新启动和崩溃,您会获得相同的 VHD 和计算机。

您编写的代码将无权写入操作系统驱动器 (D:) - 如果没有提升(或通过 RDP 登录来执行此操作)。此外,用户的角色根驱动器 (E:) 上有一个配额,可以防止您意外地将文件填满该驱动器。过去,您只能写入包大小的 10%。资源驱动器 (C:) 上也有配额,但配额要大得多,并且取决于 VM 大小。

非本地资源驱动器上不会清除任何内容,但如果您尝试超出配额,最终会收到错误消息。您可以关闭本地资源上的粘性存储,它们将在重新启动时被清理。当然,与对磁盘的其他更改一样,当升级 guest 操作系统(或底层根操作系统)时,这些非本地资源临时文件偶尔会丢失。如果您正在提升运行并确实搞砸了您的安装(您可以这样做),您将需要点击门户上的“重新镜像”按钮,一切都会回到黄金镜像。

关于windows - 是否可以丢弃 Azure 角色主机并在同一主机上启动它而不进行清理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6760325/

相关文章:

windows - 在 Windows Server 2008 上安装 javascript 驱动程序 Mongodb-native

C++ - Windows IoT Core 远程调试器 - 调试器无法启动

azure - 变量 Azure Pipelines 内的变量

sql-server - 来自 SQL Azure 的 BACPAC 导入时出错

使用 <nul 调用时 C# ReadKey 崩溃控制台应用程序

linux - gdb 奇怪的回溯,没有函数名,只有?

windows - 如何枚举 EventLog 的所有注册源

windows - 在 Windows 中更改 VB 应用程序的进程名称和发布者名称

java - 将 Akka HTTP 部署到 Azure

android - 在 Android native 库中尝试 Catch 失败