【问题标题】:aws batch job stuck in runnable with high memory requirement for jobdefinitionaws 批处理作业卡在可运行状态,作业定义的内存要求很高
【发布时间】:2018-07-26 23:28:33
【问题描述】:
我有一个批处理作业在内存要求
Batch troubleshooting 说这可能是因为资源不足:
作业卡在 RUNNABLE 状态
资源不足
如果您的作业定义指定更多 CPU 或
内存资源超过您的计算资源可以分配的,那么您的
工作永远不会被安置。例如,如果您的作业指定 4 GiB
内存,而您的计算资源少于此,那么工作
不能放在那些计算资源上。在这种情况下,您必须
减少作业定义中的指定内存或添加更大的内存
计算资源到您的环境。
但是,ComputeResorcesInstanceTypes 设置为 optimal,并且批处理似乎会根据内存要求的变化选择不同的实例类型(例如 r4.large)。所以我不明白为什么批处理无法选择具有足够内存的合适资源。
【问题讨论】:
标签:
amazon-web-services
memory
batch-processing
【解决方案1】:
可能发生的一件事是您的 AWS 账户可能会达到 EC2 实例限制。这将阻止批处理能够启动足够大以适合您的工作的实例。
【解决方案2】:
作业最终移出Runnable 并成功完成(运行的最大作业使用了 64GB)。所以看起来计算资源可以使用InstanceType 或optimal 正确设置。
【解决方案3】:
您应该做的是壳到您的 EC2 实例并在其运行时运行 docker stats。这将显示实际的容器内存/cpu 利用率。
例如,我发现在我的计算机上以 900mb 运行的 docker 进程在 ECS 中占用了 4gb(wtf?)。
此外,如果您的 AWS Batch 计算环境设置为 managed by AWS,那么它将自动扩展实例以满足您的需求,直到您达到硬限制,例如 maximum vcpu。主机永远不会耗尽内存,因为容器本身已经预先分配了内存。容器将在主机之前耗尽内存。