4

多数のc4.largeecs インスタンスがあり、それぞれに実行中の celery ワーカーを含む実行中の docker コンテナーが 1 つあります。ときどき、システムによって労働者が殺されるのを目にします。

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

free -m1 GBに制限があると言っていますが、この制限の理由がわかりません。

             total      used      free    shared   buffers    cached
Mem:          3768      3461       307         0       140      2211
-/+ buffers/cache:      1108      2659
Swap:            0         0         0

もう 1 つの重要なポイントは、通常の ec2c4.largeインスタンスがあり、同じ数 (またはそれ以上) のワーカーで実行されているセロリがあり、docker がなく、このインスタンスでこの問題が発生したことがないことです。したがって、メモリを消費するドッカーのオーバーヘッドである可能性があると思いますが、何か見落としているのでしょうか?

ありがとう

4

1 に答える 1

4

freeは、cgroup の制限とコンテナーで使用可能なメモリに関係なくメモリの合計量を表示するため、紛らわしい数字が表示されます。

cgroup 制限は、コマンド ラインを介して docker コンテナーに指定できます。Amazon の場合は、タスク定義を介して指定できます。memory パラメータを確認してください。

于 2015-11-06T18:18:54.470 に答える