2015-11-04 35 views
2

我们有一些c4.large ecs实例,每个实例都有一个运行码头集装箱,运行芹菜工人。从我们不时看到,工人们正在由系统ecs码头集装箱中芹菜工人的奇怪行为

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 

另一个重要的一点是,我们有一个平凡的EC2实例c4.large,在那里我们有芹菜运行与相同数量的工人(甚至更多),但没有码头工人,我们从来没有看到这个问题在这种情况下。所以我想这可能是一些码头开销消耗内存,但也许我错过了什么?

感谢

回答

3

free显示内存regardless of cgroup limits和可用内存集装箱总量,所以你看到混乱的数字。

可以通过命令行为docker容器指定cgroup限制,或者通过任务定义为amazon指定容器限制。检查memoryparameter