MySQL 服务器随机停止。系统是否可能在高负载或可用内存不足时将其杀死?

MySQL 服务器随机停止。系统是否可能在高负载或可用内存不足时将其杀死?

可能重复:
如何诊断 oom-killer 杀死进程的原因

我在 Amazon Web Services(EC2 微型实例)上的一台非常小的机器上安装了 Ubuntu Web 服务器(Apache + MySQL + PHP)。网站运行良好,速度非常快。因此,我们的小流量似乎根本没有减慢服务器的速度。

反正,MySQL 经常随机宕机(至少每周一次)我不知道为什么。Apache 反而运行良好。我必须通过 SSH 登录并重新启动它,然后一切运行正常:

$ sudo service mysql status
mysql stop/waiting
$ sudo service mysql start
mysql start/running, process 25384

我已经安装了 Cacti 来进行性能监控,每次 MySQL 出现故障时,我都会看到平均负载中的高单峰(最多 10,而通常低于 1)。这很奇怪,因为它似乎不会在 cronjobs 等期间发生。

我还尝试检查 MySQL 日志:慢查询日志(我确定是启用的),/var/log/mysql.log结果/var/log/mysql.err都是空的。我想也许系统自动关闭了它由于可用内存不足; 那可能吗?

现在,我正在尝试设置一个更大的 EC2 实例,但我刚刚发现一些看起来很关键的东西(但我无法理解)/var/log/syslog。我粘贴了相关部分这里(MySQL 于 11:47 宕机)。

答案1

是的,看来您的机器已经用完了可用内存,内核已将其关闭以保护系统稳定性。尝试使用内存更大的实例!

答案2

是的,oom killer 杀死了你的 mysqld。发生这种情况是因为你的服务器配置不当,或者有其他东西泄漏了内存。从这些数字来看,我怀疑你只是为 mysql 提供了太多内存/允许了太多 apache 连接,而你的内存量却不够。

您需要调整正在运行的进程的内存使用情况并限制与 apache 和 mysql 的并发连接数 - 或者获取更多内存。

相关内容