为什么docker看到容器达到rss限制?

时间:2017-06-01 06:11:26

标签: memory docker google-compute-engine

我试图理解为什么限制已经决定了任务需要被杀死,以及它如何进行会计。当我的GCE Docker容器终止进程时,它会显示如下内容:

Task in /404daacfcf6b9e55f71b3d7cac358f0dc921a2d580eed460c2826aea8e43f05e killed as a result of limit of /404daacfcf6b9e55f71b3d7cac358f0dc921a2d580eed460c2826aea8e43f05e 
memory: usage 2097152kB, limit 2097152kB, failcnt 74571 
memory+swap: usage 0kB, limit 18014398509481983kB, failcnt 0 
kmem: usage 0kB, limit 18014398509481983kB, failcnt 0 
Memory cgroup stats for /404daacfcf6b9e55f71b3d7cac358f0dc921a2d580eed460c2826aea8e43f05e: cache:368KB rss:2096784KB rss_huge:0KB mapped_file:0KB writeback:0KB inactive_anon:16KB active_anon:2097040KB inactive_file:60KB active_file:36KB unevictable:0KB 
[ pid ]   uid  tgid total_vm      rss nr_ptes swapents oom_score_adj name 
[ 4343]     0  4343     5440       65      15        0             0 bash 
[ 4421]     0  4421   265895     6702      77        0             0 npm 
[ 4422]     0  4422    12446     2988      28        0             0 gunicorn 
[ 4557]     0  4557   739241   346035    1048        0             0 gunicorn 
[ 4560]     0  4560     1086       24       8        0             0 sh 
[ 4561]     0  4561     5466      103      15        0             0 bash 
[14594]     0 14594   387558   168790     672        0             0 node 
Memory cgroup out of memory: Kill process 4557 (gunicorn) score 662 or sacrifice child 
Killed process 4557 (gunicorn) total-vm:2956964kB, anon-rss:1384140kB, file-rss:0kB 

据说内存达到了2GB的使用限制,有些东西需要死掉。根据cgroup统计数据,我在active_anonrss中的使用率似乎为2GB。

当我查看流程统计信息表时,我不知道2GB的位置:

对于rss,我看到两个主要流程346035 + 168790 = 514MB? 对于total_vm,我看到了三个主要流程265895 + 739241 + 387558 = 1.4GB

但当它决定杀死gunicorn进程时,它说它有3GB的Total VM和1.4GB的Anon RSS。我根本不知道上述数字是如何产生的......

对于其大部分生活,根据top,gunicorn进程似乎与内存使用的555m RES2131m VIRT以及22% MEM * 2.5GB box = 550MB一起发出嗡嗡声。 (我还没有能够正确地计算它在死亡时的top价值... ...

  • 有人可以帮我理解吗?
  • 根据什么会计,这些总和是2GB的使用量? (虚拟?rss?别的什么?)
  • top / ps之外还有什么其他内容我应该用来跟踪进程正在使用多少内存来实现docker杀死它的目的?

0 个答案:

没有答案