萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> 如何定位mysql性能問題

如何定位mysql性能問題

   1.首先利用系統工具,定位問題[ top | nmon | dstat -dcnml | orzdba ]:

  top命令查看各個進程的資源占用情況,各個指標依次解讀如下【top f|1 --help】 :

  第一行:當前系統時間,系統運行時長,當前登錄用戶數,系統負載(任務隊列的平均長度,三個數值分別為1,5,15分鐘)【系統負載不要超過cpu的核數】

  第二行:進程總數,正在運行的進程數據,睡眠的進程數,停止的進程數,僵屍進程數

  第三行:用戶空間占用cpu百分比,內核空間占用cpu百分比,用戶進程空間改變過優先級的進程占cpu的百分比,空閒cpu百分比,等待輸入輸出cpu百分比,,,

  第四行:物理內存總數,使用的物理內存總數,空閒內存總量,用作內核緩存的內存量 【70%】

  第五行:交換區總量,使用的交換區總量,空閒交換區總量,緩沖的交換區總量 【不要使用交換分區】

  pid 進程id

  ppid 父進程id

  Ruser real user name

  uid 進程所有者用戶id

  user進程所有者用戶名

  group 進程所有者組名

  tty 啟動進程的終端

  pr 優先級

  NI 優先級(負值表示優先級高,正值表示優先級低)

  p 最後使用的cpu,僅在cpu多的情況下

  %CPU 上次更新到現在,cpu占用百分比

  TIME 系統使用的cpu時間總計(秒)

  TIME+ ~(1/100秒)

  %MEM 進程使用的物理內存百分比

  VIRT 進程使用的虛擬內存總量 VIRT=SWAP+RES

  SWAP 進程使用的虛擬內存總量 VIRT=SWAP+RES

  RES 進程使用的虛擬內存中,被換出的大小 進程使用的、未被換出的物理內存大小RES=CODE+DATA

  CODE可執行代碼占用物理內存大小

  DATA 可執行代碼以外的部分(數據段+棧)占用的物理內存大小

  SHR 共享內存大小

  nFLT 頁面錯誤次數

  nDRT 最後一次寫入到現在,被修改過的頁面數

  S 進程狀態 D=不可中斷的睡眠狀態 R=運行 S=睡眠 T=跟蹤/停止 Z=僵屍進程

  COMMAND 命令行,命令

  WCHAN 若該進程在睡眠,則顯示睡眠中的,系統函數名

  FLAGS 任務標志

  2.查看網絡問題

  netstat -i 1 是否存在丟包,網絡錯誤問題

  iftop 【D S】查看進程流量流向 按S切換是否顯示本機的端口信息;按D切換是否顯示遠端目標主機的端口信息;

  3.查看io流向

  iostat -x 2

  iotop 查看進程io走向

  dd if=/dev/zero of=/data1/test bs=64k count=16k conv=fsync 目前生產環境EMC正常寫入速度 565 MB/秒

  dd if=/data1/test bs=64k |dd of=/dev/null 目前生產環境EMC正常讀取速度 675 MB/秒

  4.. query壓力情況

  mysqladmin -uroot -P3309 ext -ri 1 |grep -i queries

  5.查看是否有鎖等待

  select r.trx_id waiting_trx_id,

  r.trx_mysql_thread_id waiting_thread,

  r.trx_query waiting_query,

  b.trx_id blocking_trx_id,

  b.trx_mysql_thread_id blocking_thread,

  b.trx_query blocking_query

  from information_schema.innodb_lock_waits w

  INNER JOIN information_schema.innodb_trx b

  ON b.trx_id = w.blocking_trx_id

  INNER JOIN information_schema.innodb_trx r

  ON r.trx_id = w.requesting_trx_idG;

  6.查看innodb狀態

  show engine innodb statusG;

  7.從監控工具中查看,歷史記錄

  zabbix

copyright © 萬盛學電腦網 all rights reserved