代码之家  ›  专栏  ›  技术社区  ›  Nick Fernandez

aws批处理作业无法运行,作业定义的内存要求很高

  •  2
  • Nick Fernandez  · 技术社区  · 7 年前

    我有一个批处理作业,当内存需求为<15GB,但在需要更多内存时无法运行。

    Batch troubleshooting 表示这可能是因为资源不足:

    作业处于可运行状态

    资源不足

    如果作业定义指定更多CPU或 永远不会安排工作。例如,如果您的作业指定 内存,而您的计算资源少于此,那么作业 无法放置在这些计算资源上。在这种情况下,您必须 减少作业定义中指定的内存或添加更大的内存 为您的环境计算资源。

    然而 ComputeResorces InstanceTypes 设置为 optimal 批处理会选择不同的实例类型(例如。 r4.large )基于内存需求的变化。所以我不理解为什么batch无法选择具有足够内存的适当资源。

    3 回复  |  直到 7 年前
        1
  •  2
  •   Aswin    7 年前

    可能发生的一件事是,您的AWS帐户可能达到EC2实例限制。这将阻止batch启动足够大的实例以适合您的作业。

        2
  •  1
  •   Nick Fernandez    7 年前

    这些工作最终离开了 Runnable 并成功完成(运行的最大作业使用64GB)。因此,似乎可以使用 InstanceType 属于 optimal .

        3
  •  0
  •   Adam Hughes    5 年前

    您应该做的是在EC2实例中shell并运行 docker stats 当它运行时。这将显示实际的容器内存/cpu利用率。

    enter image description here

    例如,我发现在我的计算机上以900mb运行的docker进程在ECS(wtf?)中占用了4gb。

    此外,如果您的AWS批处理计算环境设置为 managed by AWS 然后,它将自动缩放实例以满足您的需要,直到达到硬限制,例如 maximum vcpu . 主机不应该耗尽内存,因为容器本身有预先分配的内存。容器将在主机之前耗尽内存。