程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 如何定位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

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved