AWS Batch 作业卡在可运行状态

AWS Batch Job Stuck in Runnable State

我正在尝试 运行 一个 100 节点的 AWS Batch 作业,当我将我的计算环境设置为仅使用 m4.xlargem5.xlarge 实例时,一切正常,我的工作是拿起并 运行s.

但是,当我开始在我的计算环境中包含其他实例类型(例如 m5.2xlarge)时,作业会无限期地停留在 runnable 状态。我在这些更新中更改的唯一变量是计算环境中的实例类型。

当我在计算环境中包含其他实例类型时,我不确定是什么导致此作业未被拾取。在 Compute Environment Parameters 的文档中,唯一的注释是:

When you create a compute environment, the instance types that you select for the compute environment must share the same architecture. For example, you can't mix x86 and ARM instances in the same compute environment.

JobDefinition是多节点:

我的计算环境最大 vCPU 设置为 10,000,始终处于 VALID 状态且始终 ENABLED。我的 EC2 vCPU 限制也是 6,000。 CloudWatch 不提供任何日志,因为作业尚未开始,我不确定在这里还能尝试什么。我也没有为实例类型使用 optimal 设置,因为我 运行 遇到没有获得足够实例的问题。

我刚刚解决了这个问题,问题出在 Batch 中的 BEST_FIT 策略上。我提交的作业与实例类型不够接近,因此它们永远不会被拾取。

我通过修改作业定义以使用 8 vCPU and 30GB 内存来解决这个问题,作业从 m5.2xlarge 个实例开始。

我会看看使用 BEST_FIT_PROGRESSIVE 策略是否会解决这个问题并报告回来,尽管我怀疑它会。

--

更新:我与 AWS Support 进行了交谈并获得了更多见解。 BEST_FIT_PROGRESSIVE 分配策略具有针对过度扩展的内置保护,因此客户不会意外启动数千个实例。尽管这有我所经历的副作用,导致作业无法启动。

支持工程师的建议是在计算环境和 BEST_FIT 分配策略中使用单一实例类型。由于我的作业具有不同的实例要求,因此我能够针对不同的实例类型 (c5.large, c5.xlarge, m4.xlarge) 成功创建三个单独的 ComputeEnvironments,提交作业并让它们 运行 在适当的计算环境中。