目前,当我使用 Windows Azure 管理门户创建部署时,运行我角色中的代码大约需要 9(9!)分钟OnStart()
。我觉得那里有些不对劲——九分钟太长了。
我有一个小型启动任务,我希望在几秒钟内完成(在 Compute Emulator 下运行时它会在几秒钟内完成),所以看起来 Azure 基础设施一直在那里做着大事。
有没有办法加快这个过程?
目前,当我使用 Windows Azure 管理门户创建部署时,运行我角色中的代码大约需要 9(9!)分钟OnStart()
。我觉得那里有些不对劲——九分钟太长了。
我有一个小型启动任务,我希望在几秒钟内完成(在 Compute Emulator 下运行时它会在几秒钟内完成),所以看起来 Azure 基础设施一直在那里做着大事。
有没有办法加快这个过程?
当您将应用程序部署到 Windows Azure 时,取决于您的 VM 大小和实例数,会发生以下情况:
您提供 VM 类型(小型、中型、大型、特大型)和实例数(例如 N)
取决于虚拟机类型设置,如果您选择了小型,那么 Fabric Controller (FC) 需要找到一个可以为您启动单核虚拟机的插槽,或者如果您选择超大型,那么 FC 需要找到一个主机来托管8 核来宾虚拟机。在此步骤中,可能会出现 2 种可能性(还有更多,但为简单起见,我仅引用 2 种):
2.1 FC 可以找到一个就绪节点(或机架),它已经有 1 个或多个空闲内核来托管您的 VM 2.2 FC 可能在所有正在运行的主机节点中找不到任何空内核,并且您需要重新启动一个新节点以托管您的访客虚拟机
如果您的 VM 被选择用于路径 2.1,在这种情况下,主机 VM 已经打开,并且主机只需要根据您的大小为您配置一个来宾 VM。这可能需要更少的时间,因为系统只需要配置和启动您的 VM。
如果您的 VM 被选择用于路径 2.2,在这种情况下,首先主机将启动(如果它没有运行并且这很常见*),然后需要配置并启动您的来宾 VM。这条路径将比路径 2.1 花费更长的时间。
注意:在 2.1 和 2.2 中,部署同一个应用程序时可能需要分离经验。
因此,在系统内部,除了简单地打开 Windows Server 2008 机器之外,还有很多事情要做。因为多个虚拟机在一个主机上运行,所以安全性是主要的,所以在配置来宾虚拟机时,需要做很多事情来保持工作正常。
About your comment on "small fleet of servers readily available at all times", that is good comment but when there a data center serving to whole world "Small" is very "huge" number and just to keep thousands of machine running without any guest is not logical. Also you just deploy once in a while, this is not what you will do on daily basis so having under 10 minutes is still comprehensible.
部署 Windows Azure 通常需要 5-15 分钟。它正在做的是启动服务器、虚拟机、启动 Windows 等。随着时间的推移,它变得越来越快,但 9 分钟肯定不是不寻常的。
If you are referring to existing VMs in Azure that you stop (deallocate) and start once in a while, then yes - there is a way to make it super fast, but you pay for it. You have to move your VMs to use premium storage.
主要区别在于,高级存储不仅在速度更快的 SSD 驱动器上,而且在不使用时也不会被存档 - 因此即使您的虚拟机处于离线状态,您也需要为它付费。看,普通存储虚拟机,当你启动它时,它们会复制到 VHD 到另一个运行它的存储中,当你完成后,它会被存档并且你不需要为该磁盘付费。
但是使用高级存储,您的 VHD 始终准备好运行,因此当您启动 VM 时,它不会被复制到任何地方。这使它更快。缺点:即使 VM 被解除分配,您也需要为 VHD 付费。
因此,您是否愿意支付这笔费用取决于您 - 但有办法做到这一点。
(我不是 azure 专家,但我确实询问了一些 MVP 同事,这就是他们的解释。如果这不准确,我很想听听)。