1. 程式人生 > >MySQL 快速定位效能問題

MySQL 快速定位效能問題

  一、效能檢視幾款小工具: Top    檢視:觀察 load average :1分鐘,5分鐘,15分鐘的平均負載值   1. us% 使用者使用的 CPU 佔比,如果 us% 太高, 極有可能索引使用不當。   2. sy% 系統核心使用的CPU佔比,如果sy% 太高,要注意MySQL 連線數以及MySQL 的鎖資訊。   3. wa% io 使用 CPU 的佔比,如果wa% 太高,要關注MySQL是否使用了硬碟臨時表,或者大量的刷盤等操作,   也有可能是硬碟太慢,或硬碟故障,可以使用iostat 等工具進行觀察。   
 Mpstat    各個邏輯CPU 之間的負載是否均衡,(可能是中斷不均衡導致效能問題),可以使用 mpstat 命令來進行詳細觀察。     Vmstat   通過vmstat 來觀察每秒的程序、記憶體、swap、io、cpu 等詳情情況。    Iostat -x   關注IO 使用情況  iostat -x       1.rrqm/s  #每秒讀取的扇區數。   2.wrqm/s #每秒寫入的扇區數。   3.avgrq-sz #平均請求扇區的大小   4.qvgqu-sz #是平均請求佇列的長度。   5.await #每一個IO 請求的相應時間。   6.%util #在統計時間內所有處理IO 時間,除以總共統計時,暗示了裝置的繁忙程度。   二、MySQL 檢視
  1. tps,qps,併發連線數(thread_connected)、併發活躍執行緒數(thread_running)、臨時表(tmp_disk_tables)、鎖(locks_waited,Innodb_row_lock*)等指標。 2.通過 show processlist ,檢視當前是否有不良執行緒狀態,例如:copy to tmp table 、creating sort index、sorting result,creating tmp table、長時間的 sending data等。 3.關注InnoDB buffer pool page 的使用情況,主要是InnoDB pages_free、InnoDB wait_free 兩個。 4.關注 InnoDB 的 redo_log 重新整理延遲,尤其是 checkpoint 延遲情況,並關注 unpurge list 大小。 5.關注 innodb status 中是否有 long semaphore wait 情況的出現。 6.觀察是否有大事務的阻塞。   參考: 田帥萌 3306 π
https://github.com/enmotplinux/old_mysql_20181224/blob/master/mysql_inspection.py
https://github.com/enmotplinux/old_mysql_20181224/blob/master/sos.sh