今天我发现 MySQL/MariaDB 在 CentOS VPS 上停止运行。当我检查状态时,我得到:
# service mysql status
ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql) exists
因此我删除了该文件,然后重新启动服务。但当天晚些时候,MySQL 将再次处于离线状态,而锁定文件仍会存在。因此,发生了一些事情,导致 MySQL 死机但保留了锁定文件,这告诉我它不是干净/平稳的退出。
过去,我曾看到锁定文件存在但服务未运行,这是因为整个 VPS 突然重启。但这里不是这种情况,因为我的 VPS 正常运行时间超过 160 天。
我注意到fail2ban
今天 VPS 上的 Wordpress 网站上有一些随机黑客攻击尝试被禁止。因此,有相当多的流量试图到处攻击服务器,直到它们被自动禁止。
- 我如何确定导致 MySQL 随机停止的原因?
- 自动重启 MySQL 的推荐方法是什么?我可以使用类似导师?
更新:查看我的messages
日志后,我看到了以下内容:
Dec 1 14:06:42 localhost kernel: Out of memory: Kill process 25063 (mysqld) score 24 or sacrifice child
Dec 1 14:06:42 localhost kernel: Killed process 25063, UID 27, (mysqld) total-vm:773716kB, anon-rss:32300kB, file-rss:48kB
那么,这是否意味着 MySQL 只是请求过多(可能来自 httpd)?
答案1
当系统内存和交换空间不足时,OOM 杀手就会启动 - 该mysqld
进程被选为受害者,可能是因为该进程的内存使用率高,而其内存上的活动相对较少。
要么调整可用的缓冲池大小,使 MariaDB 占用更少的 RAM 并且不触发 OOM 杀手(这可能会损害性能),要么为系统提供更多的 RAM 或交换。