MySQL / MariaDB停止运行。 我如何找出原因?

今天我看到MySQL / MariaDB停止在CentOS VPS上运行。 当我检查状态时,我得到:

# service mysql status ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql) exists 

所以我删除该文件,然后重新启动服务。 但是在当天晚些时候,MySQL将会再次离线,并且locking文件将仍然存在。 所以发生了什么事情导致MySQL死亡,但留下locking文件,这告诉我它不是一个干净/顺利退出。

在过去,当我看到锁文件存在,但服务没有运行,这是因为整个VPS突然重启。 但这不是这种情况,因为我的正常运行时间是160天以上的VPS。

我注意到fail2ban今天禁止在VPS上的Wordpress站点上进行一些随机的黑客攻击。 所以有相当数量的stream量试图在这里或那里锤击服务器,直到他们得到autobanned。

  1. 我怎样才能确定是什么导致MySQL随机停止?
  2. 什么是自动重新启动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进程被选为受害者,可能是由于内存使用率高,内存活动相对较低。

调整可用的缓冲池大小,使MariaDB占用更less的RAM,并且不会触发OOM杀手(这可能会损害性能),或者给系统更多的RAM或交换空间。