gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 08:57:15 25 4
gpt4 key购买 nike

Azure Batch .net tutorial显示删除任务,然后删除作业,然后删除池。同时,我发现了这个article关于清理,它只是删除不再使用的虚拟机,而不是删除作业和池。这是一个好的策略吗?我发现它可以帮助跟踪任务和总体组织,但是删除已完成任务的虚拟机后保留任务、作业和池有什么影响?

更新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.<GetAsync>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.<ExecuteRequestWithCancellationAsync>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.<ExecuteRequestAsync>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.<ProcessAndExecuteBatchRequest>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.<GetPoolAsync>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)

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

最佳答案

您根本不需要删除任务或其作业,而且将它们留在系统中也没有真正的缺点。但是,您确实需要在完成后终止作业,因为 Batch 帐户中的事件作业数量有配额。

对于池和虚拟机,这实际上取决于您想要如何管理资源(特别是考虑到这些要花钱)。常见的方法包括;

  • 显式创建一个池来运行一个或多个作业。完成后删除池。如果您想增加/减少虚拟机数量,也可以显式调整池的大小。
  • 使用自动池功能指定在提交作业时自动创建的池。当作业终止时,该池将自动删除。
  • 显式创建一个池并定义一个自动缩放公式,该公式可以在作业提交和完成时对池进行缩放。这是一项非常强大的功能,可以最大限度地提高资源利用率并最大限度地降低成本。

希望有帮助。

关于.net - Azure 批处理作业中是否需要删除任务和池?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34618115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com