Tag: 内存不足

如何检查容器中的容器内存不足

我在主机上启动一个docker服务,每次启动一个容器进行一次testing。 我以前在testing结束时使用cmd以检查testing是否内存不足: dmesg | grep -F -e 'Out of memory' -e 'invoked oom-killer: gfp_mask=0x' -e ': page allocation failure: order:' 但我注意到,如果OOM在testing过程中,所有的testing运行后,它将成为OOM,因为OOM信息已经存在dmesg没有关机或重新启动。 我很难为每个testing分割dmesg信息,所以上面的cmd不能帮助。 cmd需要在容器中运行,因为它是完成testing的一个步骤。

当由于OOM而终止任务时,内核在内核中的内存使用情况报告

Docker容器内的任务由于OOM而被杀害。 这是来自/ var / log / messsages的日志。 Feb 17 19:01:24 ip-10-0-1-85 kernel: [16211.346602] uwsgi invoked oom-killer: gfp_mask=0xd0, order=0, oom_score_adj=0 Feb 17 19:01:24 ip-10-0-1-85 kernel: [16211.351446] uwsgi cpuset=4ad797e0720ad05c90cb8f5afaa9902172c4aac9319d464e669091615b52d134 mems_allowed=0 Feb 17 19:01:24 ip-10-0-1-85 kernel: [16211.356702] CPU: 0 PID: 3969 Comm: uwsgi Tainted: GE 4.1.13-19.31.amzn1.x86_64 #1 Feb 17 19:01:24 ip-10-0-1-85 kernel: [16211.361608] Hardware name: Xen HVM domU, […]

由于内存不足而死亡的任何Docker钩子

我正在运行一个守护程序作为守护程序。 这个容器每隔几个小时就会被杀死。 我想添加一些钩子(callback),如: 重新启动容器,然后在重新启动的容器上运行一些命令 是否有可能与Docker做到这一点? 否则,有没有更好的方法来检测Python或Ruby的行为? java invoked oom-killer: gfp_mask=0xd0, order=0, oom_score_adj=0 java cpuset=bcb33ac552c23cfa531814fbc3a64ae5cd8d85aa19245e1560e0ce3e3310c798 mems_allowed=0 CPU: 3 PID: 14182 Comm: java Not tainted 4.1.0-x86_64-linode59 #1 0000000000000000 ffff8800dc520800 ffffffff8195b396 ffff880002cf5ac0 ffffffff81955e58 ffff8800a2918c38 ffff8800f43c3e78 0000000000000000 ffff8800b5f687f0 000000000000000d ffffea0002d7da30 ffff88005bebdec0 Call Trace: [<ffffffff8195b396>] ? dump_stack+0x40/0x50 [<ffffffff81955e58>] ? dump_header+0x7b/0x1fe [<ffffffff8119655d>] ? __do_fault+0x3f/0x79 [<ffffffff811789d6>] ? find_lock_task_mm+0x2c/0x7b [<ffffffff81961c55>] ? _raw_spin_unlock_irqrestore+0x2d/0x3e [<ffffffff81178dee>] […]

在Docker容器中调整subprocess的OOM杀手

请帮助find合适的解决scheme。 在Ubuntu环境中运行的是一个java服务,它周期性地用params(同一个程序的多个实例)调用外部进程。 所有东西都打包到Docker容器中(内存限制设置为非特权,除了tmp和日志以外,只读属性,cap_drop全部)。 有时,提供给subprocess的数据会使其溢出内存限制。 所以,在这种情况下,我们希望杀死由于OOM造成的subprocess,但离开父进程(java)进程运行。 如果谈到非docker系统,有一套方法可以实现这一点,如:创build一个自定义cgroup,设置内存限制,并附加subprocess。 另一种方法是调整/ proc / PID / oom_adj设置使subprocess有更大的oom_score。 但是在docker容器中,我找不到一种简单的方法,无需在特权模式下运行容器,并将外部包装添加到主进程中。 有没有一种本地的方式来添加容器内的内存cgroup或调整OOM杀手? 提前致谢!

Docker在构build时被系统杀死

我试图用命令来build立我的数字海洋液滴项目: docker-compose -f dev.yml build login控制台: Building node Step 1/5 : FROM node:6.9.2 —> faaadb4aaf9b Step 2/5 : COPY ./compose/node/entrypoint-dev.sh /entrypoint.sh —> Using cache —> 6c22978494e4 Step 3/5 : RUN sed -i 's/\r//' /entrypoint.sh && chmod +x /entrypoint.sh —> Running in d7e663ef224c Killed 我认为这个问题是内存不足,所以我创build了一个交换命令: SWAPFILE=/swapfile [ = Файл подкачки / файл подкачки] touch $SWAPFILE chmod […]

使用马拉松来部署docker容器

我正在使用马拉松来部署我的docker容器与马拉松规范中指定的内存限制,如下所示: { "id": "<name>", "cmd": null, "cpus": 2, "mem": 4096, "disk": 30720, "instances": 1, "container": { "docker": { "image": "<docker-image>", "network": "HOST", "privileged": true, "forcePullImage": true }, "requirePorts": true, "ports": [<port>], "type": "DOCKER" } } 但是运行了大约2-3小时后,遇到内存不足的问题,OOM杀手几乎没有任何任务,但导致我的服务器处于完全冻结状态。 我不能ssh或访问任何服务。 需要从该状态完全重启机器才能正常工作。 我检查了系统日志,他们似乎是: 我的问题是如何避免这一点? 可以做些什么来防止这种情况发生?