我们有许多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,我们从来没有看到过这个问题实例。所以我想这可能是一些消耗内存的码头开销,但也许我想念一些东西?
由于
答案 0 :(得分:3)
free
显示内存总量regardless of cgroup limits和容器可用的内存,因此您看到数字混乱。
可以通过命令行为docker容器指定cgroup限制,或者通过任务定义为amazon指定cgroup限制。查看memory
parameter。