MySQL性能分析、及调优工具使用详解

先介绍下基础设施(CPU、IO、网络等)检查的工具:

vmstat、sar(sysstat工具包)、mpstat、oprofile、nicstat、dstat、iotop、tsar、iostat 掌握几个即可,功能大同小异(个人常用的是 dstat、sar)


CPU

    mpstat -P ALL 1  每隔1s显示一次

wKioL1kLNwrB2iUEAAQH4kdBUck374.png

    上图可以看到CPU调度不均衡。因此我们可以尝试将pid700的进程绑定到第四颗CPU上。taskset -p 03 700 



磁盘:

    vmstat -S m 1 10

    iostat -xkdz 1

    iotop

    pt-ioprofile --profile-pid=$(pidof mysqld) --cell=sizes --run-time=30

wKiom1kLNyLROwlVAADIBt0shC0101.png

 

内存:

    vmtouch  【很cool的工具】  参考:

    作用:

       查看一个文件(或者目录)哪些部分在内存中;

       把文件调入内存;

       把文件清除出内存;

       把文件锁住在内存中而不被换出到磁盘上;

 

1. 看看/bin目录有多少内容在内存中

$ vmtouch /bin/
          
Files: 92
     Directories: 1
  Resident Pages: 348/1307  1M/5M 26.6%
         Elapsed: 0.003426 seconds

2. 看看某文件(big-dataset.txt)有多少在内存中

How much ofbig-dataset.txt is currently in memory?

$ vmtouch -v big-dataset.txt
big-dataset.txt
[                                                           ] 0/42116

          
Files: 1
     Directories: 0
  Resident Pages: 0/42116  0/164M 0%
         Elapsed: 0.005182 seconds

然后读入部分文件,

$ tail -n 10000big-dataset.txt > /dev/null

然后在用vmtouch查看一下:

$ vmtouch -vbig-dataset.txt
big-dataset.txt
[                                                   oOOOOOOO] 4950/42116

          
Files: 1
     Directories: 0
 Resident Pages: 4950/42116 19M/164M  11.8%
        Elapsed: 0.006706 seconds

我们可以看出big-datset.txt开始时没有数据在内存中,在用tail命令读入了部分数据后,有19MB的数据进入了内存。

3. 把文件(a.txt)清除出内存

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwwpfj.html