Apache-2.2
有沒有辦法自動重啟 MySQL,如果它佔用太多的處理能力?
由於我的一些糟糕的腳本,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