Mysql佔用大量寫I/O

早上收到zabbix告警,發現某臺存放監控數據的數據庫主機CPU的IOwait較高,一直持續較長時間。

image

 

登錄服務器查看磁盤IO發現隊列高達90%多,而且經常反覆如此

image

通過iotop查看發現佔用io較大的進程是mysql

image

 

登錄mysql查看show processlist,發現基本上每次io隊列較高時都是在insert時,以爲是插入語句有問題,於是打開mysql慢查詢日誌,觀察一段時間磁盤io仍然較高,但是發現並沒有任何慢查詢語句;

查找關於mysql IO問題優化資料,《【轉載】sync_binlog和innodb_flush_log_at_trx_commit 淺析》說到 sync_binloginnodb_flush_log_at_trx_commit 兩個參數,這兩個參數是控制MySQL 磁盤寫入策略以及數據安全性的關鍵參數

image

由於這臺主機作爲監控服務數據庫,所以在部署之初沒有做太多優化,配置基本保持默認,所以在每次事務提交都對應一次寫操作,導致寫操作太過頻繁。

於是修改sync_binlog和innodb_flush_log_at_trx_commit參數

set global sync_binlog=500;  

set global innodb_flush_log_at_trx_commit=2;

 

修改完sync_binlog和innodb_flush_log_at_trx_commit兩個參數後,觀察一段時間發現CPU的IOwait明顯降低

image

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章