Apache-2.2

有沒有辦法自動重啟 MySQL,如果它佔用太多的處理能力?

  • May 26, 2012

由於我的一些糟糕的腳本,MySQL 有時會出現問題 - 佔用大量 CPU 資源(平均負載超過 20 - 我只有 8 個核心)!當我重新啟動時,一切都很好。

所以我的問題是:當 MySQL 佔用超過 400% 的 CPU 時,有沒有辦法重新啟動它?

我最好只重新啟動導致問題的關聯帳戶。

伺服器:帶有 whm 的 Linux

在這種情況下重新啟動 mysql 是一種不好的做法。它會導致您的緩衝區顛簸,如果您的數據庫足夠大 - 需要一些時間來預熱。

我想您有一些消耗過多 CPU 的繁重查詢。

用於mysql> show full processlist辨識長時間執行的查詢並嘗試優化它們:創建索引、重寫查詢以更快地執行並減少排序。

為了立即獲得結果,您可以使用以下方法終止此查詢:

mysql> kill QUERYIDNUMBER

要直接回答您的問題 - 您可以使用 安全地重新啟動它service mysql restart,但這需要很長時間。重新啟動將阻止與數據庫的所有新連接,但它會等到所有正在執行的查詢完成。您可能會殺死繁重的查詢以加快速度。

此外,如果您需要加速 mysql 重新啟動,那麼有一個很好的技巧可以做到這一點。

首先,執行mysql> set global innodb_max_dirty_pages_pct = 0; 然後等到所有(或幾乎所有)臟緩衝區頁面刷新到磁碟,請參閱 mysqladmin ext -i10 | grep dirty

當你有這樣的輸出時:

| Innodb_buffer_pool_pages_dirty | 12 |

您可以重新啟動 mysql 伺服器,它會更快:

service mysql restart

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