您好,登錄后才能下訂單哦!
mysql數據庫磁盤io高的排查是怎樣的,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
最近,數據庫會報磁盤IO高的告警,但是cpu不高。
故障
● 主機名稱: xxxx
● 告警信息: Disk I/O is overloaded on xxxx
● 告警時間: 2020.04.10-13:09:06
● 主機地址: xxxxxx
● 當前狀態: 36.14 %
數據庫磁盤io高時,執行的sql如下:
|
也就是數據庫會批量的執行insert ignore into 語句。
|
可以看到,每個事務都在flushing log中,說明刷redo log比較慢。可能是redo log 比較小。
|
事實證明,innodb_log_file_size確實比較小,才50M,建議增大至2個4G。
繼續分析:
|
上述看到log thread 掛起的fsync()操作數據為1,說明log thread刷盤有等待。
另外,last checkpoint落后于log flushed up to太多,接近于redo log文件的大小,這時會觸發innodb瘋狂刷redo,從而導致磁盤io高,對性能影響非常糟糕。
還有,這個數據庫的innodb buffer pool也很小,使用的默認值為128M,也需要調大。
優化方法:
設置innodb_log_file_size=4G,設置innodb_buffer_pool_size=4G。
經過觀察,數據庫磁盤io高、cpu不高的問題消失。
看完上述內容,你們掌握mysql數據庫磁盤io高的排查是怎樣的的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。