我正在使用 mariadb 和 wordpress 容器。但是这个错误一直在发生。我怎样才能确保不再发生这种崩溃?我被攻击了吗?或者这是其他人遇到的问题?我如何附加到 mariadb 并访问 shell 并尝试找出 mariadb 容器内发生的事情?
请参阅下面每次崩溃后记录的消息...页面点击率似乎也很高。页面访问次数高达 20.000 到 60.000 次。这些似乎是爬虫、机器人的工作。不确定这些是否是恶意攻击。
关于如何处理这个问题有什么帮助吗?
我有 mariadb、wordpress 和 phpmyadmin 在 digital ocean 上的 ubuntu 14 下的三个 docker 容器中工作。 以下是崩溃消息:
[1668002.926214] 内存不足:杀死进程 16765 (mysqld) 得分 176 或牺牲子 [1668002.935614] 杀死进程 16765 (mysqld) total-vm:1012836kb, anon-rss:178840kb, file-rss:0kb [1668040.992415] 终止进程 22570 (php5-fpm) total-vm:418044kB, anon-rss:145392kB, file-rss: 20624kB
纽约服务器: [1225007.977126] 内存不足:杀死进程 3161 (mysqld) 分数 245 或牺牲 child [ 1225007.985657] killed process 3161 (mysqld) total-vm: 977148kb, anon-rss:122488kb, file-rss:0kB)
法兰克福服务器 [1632264.057873] 内存不足:杀死进程 22421 (mysqld) 得分 246 或牺牲子进程 [1632264.067530] 终止进程 22421 (mysqld) total-vm: 1005228kb, anon-rss:249328kb, file-rss:0kb
最佳答案
Docker Hub 上的官方 MySQL 镜像使用 MySQL 推荐的配置。基本上,默认配置针对性能进行了调整,旨在用于在具有大量内存(数 GB)的专用服务器上运行 MySQL。
根据您的要求和可用资源调整 MySQL 设置
当在小型 DigitalOcean 液滴(512MB、1GB)上的容器中运行 MySQL 时,您必须修改默认设置以适应您的情况。例如;限制同时连接的最大数量、更少的查询缓存等。
另请注意,默认情况下,DigitalOcean droplets 没有配置交换,这意味着如果内存不足,它们将无法使用 SSD 进行交换。在这些液滴上配置 Swap 很重要,这样 MySQL 就不会在临时需要更多内存时崩溃(例如,在重新索引数据库时)。
本文介绍了如何在 DigitalOcean 上的 Ubuntu 14.04 上配置 Swap 分区; How To Add Swap on Ubuntu 14.04
官方 MySQL Docker 存储库上的以下问题包含一些针对“性能”或“内存效率”调整 MySQL 设置的提示;
Docker Hub 上的 MySQL 自述文件描述了如何使用自定义配置文件; "Using a custom MySQL configuration file"
关于mysql docker容器经常崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34847431/