Docker容器,内存消耗和日志

时间:2016-10-21 23:30:34

标签: mysql memory docker mariadb docker-compose

我一直在尝试使用Docker几天。我正在使用Drupal图像(docker4drupal),它基本上包含MySQL(MariaDB),PHP(php-fpm)和NGINX。

几乎每次我对数据库容器进行数据库导入时,在具有512MB RAM的VPS上,使用MariaDB的容器都会死...并且出现“MySQL服务器已经消失”等消息......这不会发生在我的VPS有1GB或2GB RAM。

所以,这似乎是一个记忆问题,但我需要证据!我不知道日志在哪里告诉我我的容器因为内存不足而死了。

我检查了MariaDB日志,但我找不到任何东西......它的日志只是说“数据库没有正常关闭”,而是“它正在启动”,然后“关闭连接”......

因此,独立于我的MariaDB配置(不适用于512MB VPS)...我在哪里可以明确找到数据库服务器容器为何死亡的原因?

欢迎任何帮助。 非常感谢。

PD:我从PHP容器中执行mysql cli,这就是为什么尽管数据库容器死了,我仍然可以看到输出错误的地方。

3 个答案:

答案 0 :(得分:3)

可能是内核在'内存不足'事件中终止大多数占用内存的进程。主机系统日志中可能存在某些条目。但是缺少这样的条目并不能保证不是内核会杀死你的数据库。

确切的文件名取决于主机系统配置(在您的情况下意味着VPS)。可以是/var/log/{system.log,error.log, ...}。

只要docker容器不是隔离的VM而是内核驱动的cgroup上的包装器,内核事件就由主机系统loggin守护进程处理

答案 1 :(得分:1)

您好Beto我们可以在以下命令中查看docker checkout中的日志:

docker logs --follow命令将继续从容器的STDOUT和STDERR流式传输新输出。

答案 2 :(得分:0)

这可能太过于无法填补一个小小的512MB。做其中一个

  • 增加可用内存。 (“当我的VPS有1GB时,这不会发生”)
  • 将应用程序拆分为多个小型Docker。
  • 调整每个应用程序以减少使用RAM。 (我最近没有回答你的问题吗?)

你有几张桌子?希望不是很多,如https://dba.stackexchange.com/questions/60888/mysql-runs-out-of-memory-when-importing-innodb-database