![MySQL 服务器随机停止。系统是否可能在高负载或可用内存不足时将其杀死?](https://linux22.com/image/600886/MySQL%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%9A%8F%E6%9C%BA%E5%81%9C%E6%AD%A2%E3%80%82%E7%B3%BB%E7%BB%9F%E6%98%AF%E5%90%A6%E5%8F%AF%E8%83%BD%E5%9C%A8%E9%AB%98%E8%B4%9F%E8%BD%BD%E6%88%96%E5%8F%AF%E7%94%A8%E5%86%85%E5%AD%98%E4%B8%8D%E8%B6%B3%E6%97%B6%E5%B0%86%E5%85%B6%E6%9D%80%E6%AD%BB%EF%BC%9F.png)
可能重复:
如何诊断 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 的并发连接数 - 或者获取更多内存。