首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查容器中内存不足的容器

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

Stack Overflow用户
提问于 2017-09-20 06:37:43
回答 2查看 5.6K关注 0票数 3

我在主机上启动一个码头服务,每次启动一个容器进行一次测试。

在测试结束时,我经常使用下面的cmd检查测试是否内存不足:

代码语言:javascript
复制
dmesg | grep -F -e 'Out of memory' -e 'invoked oom-killer: gfp_mask=0x' -e ': page allocation failure: order:'

但是我注意到如果在测试期间OOM,所有在测试之后运行的测试都会变成OOM,因为OOM信息已经存在于dmesg中,而无需关闭或重新启动。

对于我来说,每个测试都很难分割dmesg信息,所以上面的cmd无法帮助我。

cmd需要在容器中运行,因为它是完成测试的一个步骤。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-22 01:14:31

我发现journalctl可以限制start_time和end_time,因此下面的命令可以很好地工作:

代码语言:javascript
复制
journalctl -k \
           --since "`date -r file "+%Y-%m-%d %H:%M:%S"`" \
           --until "`date "+%Y-%m-%d %H:%M:%S"`" | grep -q -F \
           -e 'Out of memory' \
           -e 'invoked oom-killer: gfp_mask=0x' \
           -e ': page allocation failure: order:'

我以文件mtime作为开始时间,以便在测试期间获得所有内核信息。

票数 2
EN

Stack Overflow用户

发布于 2017-09-20 07:17:10

您可以使用:

代码语言:javascript
复制
docker container inspect your-container-name | jq .[].State.OOMKilled

返回真/假。

码头集装箱检查,返回json格式的关于集装箱的东西。jq就像‘informations’,用'.[].State.OOMKilled‘过滤有关容器的信息,发现它是否是OOMKilled。

最新情况:

您可以使用-f存档相同的内容:

代码语言:javascript
复制
docker container inspect your-container-name -f '{{json .State.OOMKilled}}'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46314895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档