Amazon ec2 ecs docker容器中芹菜工人的奇怪行为

Amazon ec2 ecs docker容器中芹菜工人的奇怪行为,amazon-ec2,docker,celery,amazon-ecs,Amazon Ec2,Docker,Celery,Amazon Ecs,我们有许多c4.大型ecs实例,每个实例都有一个运行的docker容器,其中包含运行的芹菜工人。我们时不时地看到工人被制度杀害 WorkerLostError('Worker exited prematurely: signal 9 (SIGKILL).',) 在dmesg中,我可以看到以下行: Memory cgroup out of memory: Kill process 27886 (celery) score 112 or sacrifice child 据我所知,OOM对此负责

我们有许多
c4.大型
ecs实例,每个实例都有一个运行的docker容器,其中包含运行的芹菜工人。我们时不时地看到工人被制度杀害

WorkerLostError('Worker exited prematurely: signal 9 (SIGKILL).',)
dmesg
中,我可以看到以下行:

Memory cgroup out of memory: Kill process 27886 (celery) score 112 or sacrifice child
据我所知,OOM对此负责

但我也可以在
dmesg
中看到这一行:

memory: usage 964544kB, limit 1048576kB, failcnt 246284
这说明1GB有一个限制,但我不明白这个限制的原因是什么,因为
free-m

             total      used      free    shared   buffers    cached
Mem:          3768      3461       307         0       140      2211
-/+ buffers/cache:      1108      2659
Swap:            0         0         0
另一个重要的一点是,我们有一个普通的ec2
c4.large
实例,其中芹菜与相同数量的工人(甚至更多)一起运行,但没有docker,我们从未在这个实例中看到这个问题。所以我猜可能是一些docker开销消耗了内存,但也许我错过了什么


感谢

免费
显示内存总量和容器可用内存,所以您会看到令人困惑的数字

可以通过命令行为docker容器指定cgroup限制,如果是amazon,则可以通过任务定义指定cgroup限制。检查
内存