Azure批处理任务处于运行状态

Azure批处理任务处于运行状态,azure,azure-batch,Azure,Azure Batch,我在Azure批处理上有几个任务处于运行状态,尽管节点服务器对此一无所知(没有在那里运行,没有找到文件夹)。GUI中的任何任务操作(终止、删除、在节点上显示文件)以结束终止任务t20171129-0010-03时出错。服务器返回“500内部服务器错误”。。这在不同的池/作业/任务上发生过多次 现在,我已经检查了节点本身上的调试文件,问题似乎是由于未能扩展租约并随后从节点中删除任务,但中止了在没有活动队列租约的情况下更新任务表的尝试所致 这是我可以避免的,还是只是Azure批处理服务中的一个bug

我在Azure批处理上有几个任务处于运行状态,尽管节点服务器对此一无所知(没有在那里运行,没有找到文件夹)。GUI中的任何任务操作(终止、删除、在节点上显示文件)以
结束终止任务t20171129-0010-03时出错。服务器返回“500内部服务器错误”。
。这在不同的池/作业/任务上发生过多次

现在,我已经检查了节点本身上的调试文件,问题似乎是由于未能扩展租约并随后从节点中删除任务,但中止了在没有活动队列租约的情况下更新任务表的尝试所致

这是我可以避免的,还是只是Azure批处理服务中的一个bug?“租约”到底是什么?多久需要续签一次?(My Azure订阅不包含技术支持)

日志中有趣的行:

agent.task.lease■lease.py■_renew_lease_unsafe_async■106■1398■MainThread■139690855581440■extending lease for pd1batch 22F55DC6E98C8653$1a-python 22F4F1C234F19066$job-1$t20171129-0010-06
requests.packages.urllib3.connectionpool■connectionpool.py■_make_request■387■1398■Thread-1■139690661328640■"PUT /pd1batch-a-fa357c64-5c3d-4db8-9366-680943d2c20d/messages/821bf60d-3ba5-43a1-9c3d-c7500758bfea?sv=2015-07-08&se=2017-12-06T00%3A42%3A17Z&sp=up&sig=XXX&visibilitytimeout=360&popreceipt=AwAAAAMAAAAAAAAAFePc%2BR5u0wEBAAAA HTTP/1.1" 404 221
azurestorage.helper.HTTPNotFoundError: 404 Client Error: The specified message does not exist. for url: https://watbl2prod1.queue.core.windows.net/pd1batch-a-fa357c64-5c3d-4db8-9366-680943d2c20d/messages/821bf60d-3ba5-43a1-9c3d-c7500758bfea?sv=2015-07-08&se=2017-12-06T00%3A42%3A17Z&sp=up&sig=mU9501N4HHuDeRWuA7qMNni9M%2Fbb83OWLF8AW0%2B4nQE%3D&visibilitytimeout=360&popreceipt=AwAAAAMAAAAAAAAAFePc%2BR5u0wEBAAAA
agent.task.lease■lease.py■_renew_lease_unsafe_async■119■1398■MainThread■139690855581440■failed to extend lease for pd1batch 22F55DC6E98C8653$1a-python 22F4F1C234F19066$job-1$t20171129-0010-06
agent.task.manager■manager.py■handle_task_lease_extension_error_async■4713■1398■MainThread■139690855581440■deleting task pd1batch 22F55DC6E98C8653$1a-python 22F4F1C234F19066$job-1$t20171129-0010-06$0 because lease was lost
agent.task.manager■manager.py■_postprocess_execute_task_async■2255■1398■MainThread■139690855581440■updating row in task table for: pd1batch 22F55DC6E98C8653$1a-python 22F4F1C234F19066$job-1$t20171129-0010-06$0
agent.task.manager■manager.py■_update_tasktable_entity_async■1624■1398■MainThread■139690855581440■aborting attempt to update task table without an active queue lease for pd1batch 22F55DC6E98C8653$1a-python 22F4F1C234F19066$job-1$t20171129-0010-06$0

整个日志:

目前,Azure批处理任务的总生存期限制为7天,从提交到作业时开始,如上所述

当达到此限制时,系统中存在阻止任务状态更新传播的问题。但是,如果观察任务运行的节点状态,它将返回空闲状态(假设没有其他任务调度给它或当前正在运行)

您有几个选项可以避免这种情况。如果您的工作负载可以扩展或迁移到性能更高的VM类型,这样您的任务就可以在时间限制内完成。如果您可以通过执行分布计算或将问题分块成更小的大小并以令人尴尬的并行方式运行来扩展问题(或进一步扩展),这可能有助于解决您的问题


当前的行为对用户不是很友好。有计划在将来增加这一限制。

这些任务运行了多长时间?我认为最后一个任务只运行了几天,但较老的任务可能最多运行7天。但这不应该导致他们被卡住…这就是原因-我将在回答中解释。如果我在创建任务时设置了时间限制(例如1天)并允许任务重新启动,这会有帮助吗?或者这些任务重新启动会累积到7天并失败吗?我的任务本身运行许多小的“子任务”,因此可以重新启动它,并且它将继续它离开的地方。如果您的逻辑知道如何按照您的建议检查点/重新启动,这将有所帮助。您不能仅仅依靠任务重试(因为它使用相同的任务),但是如果您为每次重新启动创建一个新任务,这将起作用。每个任务都是独立的,工作本身没有时间限制。如果适合您的场景,您可以使用最大wallclock时间任务约束自动结束任务。此外,您还可以使用作业重复来自动化整个过程。