Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure在使用中实例中自动缩放_Azure - Fatal编程技术网

Azure在使用中实例中自动缩放

Azure在使用中实例中自动缩放,azure,Azure,我正在使用Azure自动缩放功能处理数百个文件。系统可正确扩展到8个实例,每个实例一次处理一个文件 问题在于在中进行缩放。因为规则中的比例似乎基于所有实例,如果我告诉它在平均CPU负载

我正在使用Azure自动缩放功能处理数百个文件。系统可正确扩展到8个实例,每个实例一次处理一个文件

问题在于在中进行缩放。因为规则中的比例似乎基于所有实例,如果我告诉它在平均CPU负载<25%后将实例计数减少回1,它将任意杀死仍在处理数据的实例


是否有办法防止它关闭仍在使用的单个实例?

缩小将首先删除最高的实例号。例如,如果在0中有WorkerRole_,在1中有WorkerRole_,…,在8中有WorkerRole_,然后按1缩小,Azure将首先删除8中的WorkerRole_。Azure不知道您的代码正在做什么(即,它是否仍在处理文件),或者它是否已完成并准备关闭

您有几个选择:

  • 如果文件处理速度很快,您可以在OnStop事件中将关闭延迟最多5分钟,让您的实例有足够的时间完成文件处理。这是最容易实现的解决方案,但不是最可靠的
  • 如果处理文件可以分为较短的工作块,那么您可以让实例处理块,直到文件完成。这样一来,关闭任意实例并不重要,因为您不会损失任何大量的工作,而另一个实例将继续它停止的地方。请参阅以获取模式。这是一个理想的解决方案,因为它是分布式工作负载的优化体系结构,但某些工作负载(即图像/视频处理)可能无法轻松分解
  • 您可以实现自己的自动缩放算法,并手动关闭您选择的各个实例。为此,您需要调用Delete角色实例API()。这需要一些外部流程来监控您的工作负载和执行管理操作,因此根据您的基础架构,这可能不是一个好的解决方案