Centos

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

  • December 2, 2014

今天我看到 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 網站上進行一些隨機黑客攻擊。因此,有相當多的流量試圖在這里和那裡敲擊伺服器,直到它們被自動禁止。

  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程序被選為受害者,可能是由於 RAM 使用率高和其 RAM 上的活動相對較低。

調整可用緩衝池大小以使 MariaDB 佔用更少的 RAM 並且不觸發 OOM 殺手(這可能會損害性能)或為系統提供更多 RAM 或交換。

引用自:https://serverfault.com/questions/648381