docker - 如何检测 Docker 容器何时达到其配置的内存限制

标签 docker memory-limit

给定一个已使用 memory limit 启动的 Docker 容器,我想知道是否有可能检测到何时强制执行内存限制,因此容器即将崩溃,因为它的内存不足。是否有一些我可以捕获的信号?或者我可以轮询一些日志文件?事后检测到这一点,即使延迟几分钟仍然有用

最佳答案

如果 docker 由于内存限制而终止了您的容器,您将看到:

docker inspect --format '{{.State.OOMKilled}}' ${container_id}

设置为 true。

请注意,如果操作系统在达到 Docker 内存限制之前终止容器内运行的进程,您将看到的只是应用程序收到的 SIGKILL。

<小时/>

您可以主动监控容器的docker stats,看看它是否接近此处其他答案所述的限制。

<小时/>

并且您可以近乎实时地监控任何因 OOM 而被终止的容器的 docker 事件:

docker events --filter type=container --filter event=oom

您可以调整上述事件命令来监视特定容器或受到时间限制。请参阅documentation获取可用标志。

关于docker - 如何检测 Docker 容器何时达到其配置的内存限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53839415/

相关文章:

php - 在 PHP/Apache 中提供大型 protected 文件

Javascript 和/或点击因过度拥挤而变得不稳定?

mysql - Docker-工具箱 & Win7 |卷选择权限被拒绝

oracle - 在 mac os x 上构建 oracle docker 镜像失败,出现 "This system does not meet the minimum requirements for swap space."

php - ini_set ('memory_limit' ) 导致 php 崩溃

php - 从大 table 中找到匹配项的最佳方法

unix - 如何将命令行选项传递给我的 dockerized GoLang 程序?

docker - 无法在Windows上使用Docker停止容器

windows - Windows 主机上来自 Docker 的卷映射 filebeat.yml 权限

c - 如何在 Linux 中以编程方式限制程序运行时间、内存使用以及作为特定用户