色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql數據庫cpu飆升800%,如何故障定位及優化?

錢琪琛2年前16瀏覽0評論

mysql數據庫cpu飆升800%,基本上就兩種原因:

  1. 訪問量大,大到你8核cpu都承受不了;

  2. 慢查詢,數據庫執行sql語句操作(查詢數據、修改數據)會產生大量的邏輯讀,將讀出來的數據維護到臨時表中(內存),系統需要消耗較多的cpu來維持內存與磁盤數據的一致性。

大多數情況下都是開發人員對sql的把握質量不夠,導致慢sql查詢的產生,進而影響數據庫的整體運行狀況。

大量行鎖沖突、行鎖等待或后臺任務也有可能會導致實例的CPU使用率過高,但這些情況出現的概率非常低。

當我們的數據庫性能下降的厲害或者cpu飆升時候,可以進行如下操作定位問題:

查詢mysql進程列表

showfullprocesslist;

獲取到mysql當前使用的進程:

如果進程很多,說明請求量很大,需要區分是否正常業務流量,還是代碼問題導致的。

查詢慢查詢日志

showvariableslike'%slow_query_log%';

找到慢查詢日志文件/home/mysql/data3085/mysql/

slow_query.log

,即可找到慢查詢日志信息,解決這些慢sql,你的cpu一定會降下來。

避免數據庫cpu飆升

實際開發過程中,我們對數據庫的使用一定要小心,不能等問題發生了再去排查問題解決問題,而是要預防問題的發生,并且在問題可能發生的情況下,提前介入,避免問題擴大化。平時開發過程中需要做好一些準備工作:

  1. 增加CPU使用率告警機制,比如使用率超過80%就短信告警;

  2. 所有的sql語句必須走索引,有DBA則由DBA統一調控,沒有的話開發人員先執行explain看sql執行計劃,必須走索引,屬于強制規則;

  3. 新功能上線必須進行壓測;

  4. 日常mysql運行監控,慢查日志查看,將隱患扼殺在搖籃之中。

以上就是一些mysql穩定運行的個人看法,大家還有什么好的建議,歡迎評論去交流討論,批評指正~