Docker 容器、内存消耗和日志
Docker containers, memory consumption and logs
我已经尝试 Docker 几天了。我使用的是 Drupal 图像 (docker4drupal),它基本上包含 MySQL (MariaDB)、PHP (php-fpm) 和 NGINX。
几乎每次我将数据库导入到数据库容器时,在具有 512MB RAM 的 VPS 上,带有 MariaDB 的容器死了......并且出现 "MySQL server has gone away" 之类的消息......这当我的 VPS 有 1GB 或 2GB RAM 时不会发生。
所以,这似乎是一个内存问题,但我需要证据!我不知道告诉我容器因内存不足而死掉的日志在哪里。
我检查了 MariaDB 日志,但我找不到任何东西......它的日志只说了一些像 "the database was not normally shutdown" 和 thaen "it's starting" 然后 "wating for connections"...
所以,独立于我的 MariaDB 配置(这不适合 512MB VPS)...我在哪里可以明确找到带有数据库服务器的容器死机的原因?
欢迎任何帮助。
非常感谢。
PD:我从 PHP 容器执行 mysql cli,这就是为什么尽管数据库容器死了,但我仍然可以看到发生错误的输出。
你好 Beto,我们可以在 docker 中查看日志,查看以下命令:
docker logs --follow 命令将继续从容器的 STDOUT 和 STDERR 流式传输新输出。
可能是内核在 'lack-of-memory' 事件上终止了最耗内存的进程。一些条目可能存在于主机系统日志中。但是,缺少此类条目并不能保证不是内核杀死了您的数据库。
确切的文件名取决于主机系统配置(在您的情况下意味着 VPS)。可以是 /var/log/{system.log,error.log, ...}.
只要 docker 容器不是孤立的 VM,而是内核驱动的 cgroups 的包装器,内核事件由主机系统登录守护进程处理
在极小的 512MB 中塞满这可能太多了。执行其中一项
- 增加可用内存。 ("And this does not happen when my VPS has 1GB")
- 跨多个微型 Docker 拆分应用程序。
- 调整每个应用程序以使用更少的 RAM。 (我不是最近才回答你的问题吗?)
你有几张桌子?希望不会很多,如 https://dba.stackexchange.com/questions/60888/mysql-runs-out-of-memory-when-importing-innodb-database
我已经尝试 Docker 几天了。我使用的是 Drupal 图像 (docker4drupal),它基本上包含 MySQL (MariaDB)、PHP (php-fpm) 和 NGINX。
几乎每次我将数据库导入到数据库容器时,在具有 512MB RAM 的 VPS 上,带有 MariaDB 的容器死了......并且出现 "MySQL server has gone away" 之类的消息......这当我的 VPS 有 1GB 或 2GB RAM 时不会发生。
所以,这似乎是一个内存问题,但我需要证据!我不知道告诉我容器因内存不足而死掉的日志在哪里。
我检查了 MariaDB 日志,但我找不到任何东西......它的日志只说了一些像 "the database was not normally shutdown" 和 thaen "it's starting" 然后 "wating for connections"...
所以,独立于我的 MariaDB 配置(这不适合 512MB VPS)...我在哪里可以明确找到带有数据库服务器的容器死机的原因?
欢迎任何帮助。 非常感谢。
PD:我从 PHP 容器执行 mysql cli,这就是为什么尽管数据库容器死了,但我仍然可以看到发生错误的输出。
你好 Beto,我们可以在 docker 中查看日志,查看以下命令:
docker logs --follow 命令将继续从容器的 STDOUT 和 STDERR 流式传输新输出。
可能是内核在 'lack-of-memory' 事件上终止了最耗内存的进程。一些条目可能存在于主机系统日志中。但是,缺少此类条目并不能保证不是内核杀死了您的数据库。
确切的文件名取决于主机系统配置(在您的情况下意味着 VPS)。可以是 /var/log/{system.log,error.log, ...}.
只要 docker 容器不是孤立的 VM,而是内核驱动的 cgroups 的包装器,内核事件由主机系统登录守护进程处理
在极小的 512MB 中塞满这可能太多了。执行其中一项
- 增加可用内存。 ("And this does not happen when my VPS has 1GB")
- 跨多个微型 Docker 拆分应用程序。
- 调整每个应用程序以使用更少的 RAM。 (我不是最近才回答你的问题吗?)
你有几张桌子?希望不会很多,如 https://dba.stackexchange.com/questions/60888/mysql-runs-out-of-memory-when-importing-innodb-database