Azure Batch 任务卡在 运行 状态

Azure Batch tasks stuck in Running state

我在 Azure Batch 上有几个任务卡在 运行 状态,尽管节点服务器对此一无所知(那里没有 运行,找不到文件夹)。 GUI 中的任何任务操作(终止、删除、显示节点上的文件)都以 There was an error while terminating task t20171129-0010-03. The server returned '500 Internal Server Error'. 结尾。这在不同的池/作业/任务上发生了几次。

现在我检查了节点本身的调试文件,问题似乎是由未能延长租约并随后从节点删除任务引起的,但是在没有活动队列租用的情况下中止更新任务 table 的尝试

这是我可以避免的事情,还是只是 Azure Batch 服务中的错误? "lease" 到底是什么,需要多久更新一次? (我的 Azure 订阅不包含技术支持)。

日志中有趣的行:

agent.task.lease■lease.py■_renew_lease_unsafe_async■106■1398■MainThread■139690855581440■extending lease for pd1batch 22F55DC6E98C8653a-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 22F55DC6E98C8653a-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 22F55DC6E98C8653a-python 22F4F1C234F19066$job-1$t20171129-0010-06[=11=] because lease was lost
agent.task.manager■manager.py■_postprocess_execute_task_async■2255■1398■MainThread■139690855581440■updating row in task table for: pd1batch 22F55DC6E98C8653a-python 22F4F1C234F19066$job-1$t20171129-0010-06[=11=]
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 22F55DC6E98C8653a-python 22F4F1C234F19066$job-1$t20171129-0010-06[=11=]

整个日志:https://pastebin.com/fkqTRuBe

目前,Azure Batch 任务的总生命周期限制为 7 天,从它提交到作业的时间算起 here

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

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

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