芹菜工人在ecs码头工人容器中的奇怪行为

时间:2015-11-04 11:40:44

标签: amazon-ec2 docker celery amazon-ecs

我们有许多R"((?:^|\s)([+-]?[[:digit:]]+(?:\.[[:digit:]]+)?)(?=$|\s))"个ecs实例,每个实例都有一个正在运行的芹菜工作器的正在运行的docker容器。我们不时会看到工人被系统杀死

c4.large

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

dmesg

据我所知,OOM对此负责

但我也可以在Memory cgroup out of memory: Kill process 27886 (celery) score 112 or sacrifice child 中看到这一行:

dmesg

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

free -m

另一个重要的一点是,我们有一个普通的ec2 total used free shared buffers cached Mem: 3768 3461 307 0 140 2211 -/+ buffers/cache: 1108 2659 Swap: 0 0 0 实例,我们的芹菜运行的工人数量相同(甚至更多),但是没有docker,我们从来没有看到过这个问题实例。所以我想这可能是一些消耗内存的码头开销,但也许我想念一些东西?

由于

1 个答案:

答案 0 :(得分:3)

free显示内存总量regardless of cgroup limits和容器可用的内存,因此您看到数字混乱。

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