2015-11-04 94 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