今天我看到 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 的推荐方法是什么?我可以使用像Supervisor这样的东西吗?
更新:查看我的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)?
OOM 杀手在系统内存不足和交换时被触发 - 该
mysqld
进程被选为受害者,可能是由于 RAM 使用率高且其 RAM 上的活动相对较低。调整可用缓冲池大小以使 MariaDB 占用更少的 RAM 并且不触发 OOM 杀手(这可能会损害性能)或为系统提供更多 RAM 或交换。