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=]
目前,Azure Batch 任务的总生命周期限制为 7 天,从它提交到作业的时间算起 here。
当达到此限制时,系统中存在阻止任务状态更新传播的问题。但是,如果您观察任务 运行 所在的节点状态,它将 return 空闲(假设没有其他任务安排给它或当前 运行)。
您有几种选择可以避免这种情况。如果您的工作负载易于扩展或迁移到性能更高的 VM 类型,以便您的任务在时限内完成。如果您可以通过执行分布计算或将问题分块成更小的大小并 运行 以令人尴尬的并行方式扩展您的问题(或进一步扩展),这可能有助于解决您的问题。
当前的行为对用户来说不是很友好。有计划在未来增加这个限制。
我在 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=]
目前,Azure Batch 任务的总生命周期限制为 7 天,从它提交到作业的时间算起 here。
当达到此限制时,系统中存在阻止任务状态更新传播的问题。但是,如果您观察任务 运行 所在的节点状态,它将 return 空闲(假设没有其他任务安排给它或当前 运行)。
您有几种选择可以避免这种情况。如果您的工作负载易于扩展或迁移到性能更高的 VM 类型,以便您的任务在时限内完成。如果您可以通过执行分布计算或将问题分块成更小的大小并 运行 以令人尴尬的并行方式扩展您的问题(或进一步扩展),这可能有助于解决您的问题。
当前的行为对用户来说不是很友好。有计划在未来增加这个限制。