我们有许多c4.large
ecs 实例,每个实例都有一个正在运行的 docker 容器和正在运行的 celery 工作人员。我们不时看到工人被系统杀死
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
这表示 1 GB 有限制,但我不明白这个限制的原因是什么,因为free -m
说
total used free shared buffers cached
Mem: 3768 3461 307 0 140 2211
-/+ buffers/cache: 1108 2659
Swap: 0 0 0
另一个重要的一点是,我们有一个普通的 ec2c4.large
实例,我们在其中运行 celery 并使用相同数量(甚至更多)的工人,但没有 docker,我们从未在这个实例上看到过这个问题。所以我想这可能是一些消耗内存的 docker 开销,但也许我错过了什么?
谢谢