• mycat实战之性能测试


    mycat 环境见上篇
    http://www.cnblogs.com/chinesern/p/7954373.html

    1.安装性能监控工具

    1.1 nmon

    安装nmon

    #下载地址
    http://nmon.sourceforge.net/pmwiki.php?n=Site.Download  
    nmon16g_x86.tar.gz 9MB
    
    #解压缩
    mkdir nmon;
    tar xvf nmon16g_x86.tar.gz
    

    执行监控命令

    ./nmon16g_x86_rhel72 -f -t -s 5 -c 360
    
    -f:按标准格式输出文件:_YYYYMMDD_HHMM.nmon;
    -t:输出中包括占用率较高的进程
    -s 5:每 5 秒进行一次数据采集-c CLEAR
    
    -c 360 :一共采集 360 次,即总共采集半小时数据
    
    
    #回车后,将自动在当前目录生成一个 hostname_timeSeries.nmon 的文件:
      例如:mysqltest_171113_230.nmon
    
    #采集结束之后,通过 sort 命令可以将 nmon 结果文件转换为 csv 文件:    
    sort MysqlTest_171113_2307.nmon >MysqlTest_171113_2307.csv
    执行完 sort 命令后即可在当前目录生产 mysqldb_170704_0045.csv 文件
    
    1.2 excel 分析器
    #下载地址:
    https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/Power+Systems/page/nmon_analyser
    nmon_analyser_v51_2.zip
    
    #解压    
    解压后两个文件,一个Word,一个Excel,Word是说明文档,Excel就是我们需要的工具了。
    双击打开这个Excel文件,点击“Analyze nmon data”,然后选择我们刚才生成的nmon文件,
    大概十几秒左右(数据量不同,生成的时间也不一样)就会生成我们需要的报表了。
    此时我们就可以更加直观的观看CPU,内存等数据了。
    
    1.3 基准测试工具TestTools
    #下载地址
    https://github.com/MyCATApache/Mycat-download/blob/master/1.5-RELEASE/
    Mycat-server-1.5.1-RELEASE-20161130213509-testtool.tar.gz
    
    #解压
    tar xvf Mycat-server-1.5.1-RELEASE-20161130213509-testtool.tar.gz
    

    2开始基准测试

    2.1 准备性能测试脚本
    [root@MysqlTest bin]# cd /tool/testtool/mycat/bin
    [root@MysqlTest bin]# ls -lrt
    total 44
    -rwxr-xr-x 1 root root 603 Dec 13  2015 test_stand_update_perf.sh
    -rwxr-xr-x 1 root root 612 Dec 13  2015 test_stand_update_perf.bat
    -rwxr-xr-x 1 root root 603 Dec 13  2015 test_stand_select_perf.sh
    -rwxr-xr-x 1 root root 613 Dec 13  2015 test_stand_select_perf.bat
    -rwxr-xr-x 1 root root 602 Dec 13  2015 test_stand_merge_sel_perf.sh
    -rwxr-xr-x 1 root root 611 Dec 13  2015 test_stand_merge_sel_perf.bat
    -rwxr-xr-x 1 root root 591 Dec 13  2015 test_stand_insert_perf.sh
    -rwxr-xr-x 1 root root 600 Dec 13  2015 test_stand_insert_perf.bat
    -rwxr-xr-x 1 root root 602 Dec 13  2015 test_globaltable_insert_perf.sh
    -rwxr-xr-x 1 root root 611 Dec 13  2015 test_globaltable_insert_perf.bat
    -rwxr-xr-x 1 root root 602 Dec 13  2015 test_globalseq_insert_perf.bat
    
    
    #准备脚本:
    使用testtool 需要先建立仿真测试文件,person-insert.sql 文件内容如下:
    

    注意 sql=后面的语句一定要在一行中 不能换行,不然执行时会报错

    vi person-insert.sql
    
    total=100000
    sql=insert into person(id,name, school, age, addr, zcode, birth, score)
    values(NEXT VALUE FOR MYCATSEQ_PERSON,'${char([a-f,0-9]8:10)}', ${int(1-1000)}, ${int(18-60)},
    'chengdu-${enum(jinniu,qingyang,jinjiang)}', ${int(610000-610200)},
    '${date(yyyyMMdd-[1980-1990]y)}', ${int(60-100)})
    
     #Int:数字,${int(..)} 可以是,${int(10-999)}或者,${int(10,999)}
      前者表示从10到999的值;后者表示 10 或者 999
     #Date:日期,如${date(yyyyMMddHHmmssSSS-[2014-2015]y)}
      表示从2014到2015年的时间,前面是输出格式,符合 Java 标准
     #Char:字符串,${char([0-9]2:2)}表示从0到9的字符,长度为2位
     (2:2,}${char([a-f,0-9]8:8)}表示从a到 f以及0到9的字符串随机组成,定常为8位。
     #Enmu:枚举,表示从指定范围内获取一个值, ${enum(0000,0001,0002)},
      里面可以是任意字符串或数字等内容。
    
    2.2 开始性能测试,针对不同step开始测试:10,100,10000 三个类型.

    每次切换步长,最好初始化下

    #初始化序列号 初始化表 
    mysql> truncate table PERSON; 
    Query OK, 0 rows affected (0.75 sec)
    
    #use db1
    mysql> truncate table MYCAT_SEQUENCE; 
    Query OK, 0 rows affected (0.20 sec)
    

    设置步长为 10

    mysql> INSERT INTO MYCAT_SEQUENCE(name,current_value,increment) VALUES (‘PERSON’,100000, 10);
    

    执行测试脚本

    [root@MysqlTest bin]# ./test_stand_insert_perf.sh jdbc:mysql://192.168.2.136:8066/TESTDB 
                              test test 10 file=person-insert.sql
    

    执行结果

    #步长 10
    finishend:100000 failed:0
    used time total:1236seconds
    tps:80.89960359194241
    
    #步长100
    finishend:100000 failed:0
    used time total:234seconds
    tps:427.16787697565144
    
    #步长10000
    15 02:23:29 finished records :98900 failed:0 speed:836.6608012994044
    15 02:23:30 finished records :99400 failed:0 speed:833.8086769788276
    finishend:100000 failed:0
    used time total:120seconds
    tps:832.6394671107411
    

    总结:

    随着step增大,tps显著增长,总的执行时间也在下降明显;
    但是在step增大到一定范围的时候,tps 不再有显著增长,相应执行时间也下降趋于平稳。
    原因是:
    由于自增的 sequence 是在表中存放的,每次插入数据的时候,取序号都受到这张表
    的访问速度限制。所以,在 step 比较小的时候,访问表的次数较多,因此 tps 比较
    低,执行效率低下;在 step 比较大的时候,访问表的次数较少,因此 tps 比较高;
    而且插入采用的批处理,步长越长,一次插入的条数就越多,所以时间也就越短。
    
    2.3 三台机器性能分析

    数据库机器的cpu io 性能图

    mycat机器的cpu io 性能图

    testtool机器的cpu io 性能图

    总结:

     1.mysql数据库cpu和io变化比较明显,但是 io的占用率相对大很多。步长达到一定程度后,趋势平稳!
     2.mycat服务器cpu变化明显,io基本没什么负载。步长达到一定程度后,cpu趋势平稳!
     3.testtool机器 cpu变化明显,io无负载。 cpu占用也小!
  • 相关阅读:
    spring揭秘 读书笔记 六 bean的一生
    分枝限界算法
    libLAS1.8.0 编译和配置(VS2013+Win7 64)(一)
    Unity学习笔记 之 发射小球碰撞物体的代码记录
    hdu1281 棋盘游戏 --- 最大匹配
    javascript设计模式
    3、Android中Activity的跳转
    2.11 确定运行计划
    php扩展之 pdo_mysql.so
    POJ 1061 青蛙的约会(扩展欧几里得)
  • 原文地址:https://www.cnblogs.com/chinesern/p/7954385.html
Copyright © 2020-2023  润新知