当前位置:  开发笔记 > 程序员 > 正文

在Azure批处理作业中是否需要删除任务和池?

如何解决《在Azure批处理作业中是否需要删除任务和池?》经验,为你挑选了1个好方法。

在Azure的批量.NET教程节目删除任务,然后工作,然后池。同时,我找到了有关清理的文章,而不是删除作业和池,而是删除不再使用的VM。这是个好策略吗?我看到它可以帮助跟踪任务和总体组织,但是在删除已完成任务的虚拟机之后保留任务,作业和池有什么含义?

更新2018-05-15

给定作业的最大任务数为7770。

我遵循以下答案,最后完成了一项累计7770个任务的工作。在这个神奇的数字之后,批处理服务将不再能够向作业添加新任务,并引发以下异常:

System.AggregateException: One or more errors occurred. ---> Microsoft.Azure.Batch.Common.BatchException: InternalError: Server encountered an internal error. Please try again after some time.
RequestId:e6ab60e0-5c3b-4116-9ffb-ba2032154318
Time:2018-05-15T11:17:17.2186951Z
   at Microsoft.Azure.Batch.Protocol.CloudPoolOperations.d__65.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Azure.Batch.Protocol.BatchRequest`2.d__c.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Azure.Batch.Protocol.BatchRequest`2.d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Azure.Batch.ProtocolLayer.d__11b`2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Azure.Batch.PoolOperations.d__3.MoveNext()
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
   at Microsoft.Azure.Batch.PoolOperations.GetPool(String poolId, DetailLevel detailLevel, IEnumerable`1 additionalBehaviors)
   at Pepe.Helpers.Batch.CreatePool()
   at Pepe.Helpers.LogEntryMaintainer.LaunchJob(LogFile log, PepeEntities db)

我建议定期清理历史数据。如果您需要将此信息保留在某个地方,建议将其移动到某个地方,例如表存储。



1> Dave..:

您根本不需要删除任务或任务,将它们留在系统中也没有任何不利的方面。但是,您确实需要在完成时终止作业,因为批处理帐户中的活动作业数量有配额。

关于池和VM,这取决于您如何管理资源(特别是考虑到这些花了您的钱),这完全取决于您。常见方法包括:

显式创建一个池以运行一个或多个作业。完成后删除池。如果要增加/减少VM的数量,也可以显式调整池的大小。

使用自动池功能可以指定要在提交作业时自动创建的池。作业终止时,池将被自动删除。

明确创建一个池并定义一个自动缩放公式,该公式可以在提交作业和完成作业时上下缩放该池。这是最大化资源利用率和最小化成本的非常强大的功能。

希望能有所帮助。

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有