我正在尝试使用Batch来执行大规模的并行作业,使用Docker容器。我想同时处理数千个任务。
我把一切都准备好了。我的计算环境配置了2048个最大vCPU。每个任务都配置为使用单个vCPU和2 2GB内存。我使用的是一个包含1000个数组元素的数组作业(目前)。
问题是:当我创建一个新作业时,并发性似乎非常有限。当我查看ECS中的集群时,“未决任务”似乎总是在50左右徘徊(它可能永远不会超过50),而“运行任务”不会超过30。即使每个单独的任务只需要大约10秒来完成,整个批次也需要大约20分钟。
这不是我所期望的。有了上面的设置,我认为Batch可以同时处理所有1000个任务。
我最初认为这个问题可能是因为我使用了一个公共子网(所有的Fargate容器都有公共IP)。我改为使用私有子网(带有NAT网关),但没有帮助。
有人知道我做错了什么吗?
谢谢!
发布于 2021-05-27 01:50:37
答案在上面的评论中,但对于后代来说:
AWS Batch Compute Environment with Fargate资源的扩展速度不足以满足您的需求,因为每个作业都在其自己的Fargate资源中启动。将EC2用于计算环境将启动一个大型实例,该实例将在其上并发运行多个作业,因此扩展运行作业的速度将会快得多。
至于为什么你会看到max (pending 50 running 30),这可能是因为你的请求达到了启动/完成的平衡。如果您的作业运行时间超过10秒(分钟),您将看到正在运行的任务总数比您看到的要高。
https://stackoverflow.com/questions/67568940
复制相似问题