mycat实战之性能测试
1.安装性能监控工具
1.1 nmon
安装nmon
de >#下载地址
http://nmon.sourceforge.net/pmwiki.php?n=Site.Download
nmon16g_x86.tar.gz 9MB #解压缩
mkdir nmon;
tar xvf nmon16g_x86.tar.gzde>
执行监控命令
de >./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 文件de>
1.2 excel 分析器
de >#下载地址:
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,内存等数据了。de>
1.3 基准测试工具TestTools
de >#下载地址
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.gzde>
2开始基准测试
2.1 准备性能测试脚本
de >[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 文件内容如下:de>
注意 sql=后面的语句一定要在一行中 不能换行,不然执行时会报错
de >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)},
里面可以是任意字符串或数字等内容。de>
2.2 开始性能测试,针对不同step开始测试:10,100,10000 三个类型.
每次切换步长,最好初始化下
de >#初始化序列号 初始化表
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)de>
#设置步长为 10
mysql> INSERT INTO MYCAT_SEQUENCE(name,current_value,increment) VALUES (‘PERSON’,100000, 10);
执行测试脚本
de >[root@MysqlTest bin]# ./test_stand_insert_perf.sh jdbc:mysql://192.168.2.136:8066/TESTDB
test test 10 file=person-insert.sqlde>
执行结果
de >#步长 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.6394671107411de>
总结:
de >随着step增大,tps显著增长,总的执行时间也在下降明显;
但是在step增大到一定范围的时候,tps 不再有显著增长,相应执行时间也下降趋于平稳。
原因是:
由于自增的 sequence 是在表中存放的,每次插入数据的时候,取序号都受到这张表
的访问速度限制。所以,在 step 比较小的时候,访问表的次数较多,因此 tps 比较
低,执行效率低下;在 step 比较大的时候,访问表的次数较少,因此 tps 比较高;
而且插入采用的批处理,步长越长,一次插入的条数就越多,所以时间也就越短。de>
2.3 三台机器性能分析
数据库机器的cpu io 性能图
mycat机器的cpu io 性能图
testtool机器的cpu io 性能图
总结:
de > 1.mysql数据库cpu和io变化比较明显,但是 io的占用率相对大很多。步长达到一定程度后,趋势平稳!
2.mycat服务器cpu变化明显,io基本没什么负载。步长达到一定程度后,cpu趋势平稳!
3.testtool机器 cpu变化明显,io无负载。 cpu占用也小!de>
mycat实战之性能测试的更多相关文章
- mycat读写分离性能测试
1. MySQL主从配置 我们的方案设计基于Mysql的主从数据复制功能,以下是基于mysql5.5以上版本最新的主从配置. 开启mysql主从数据复制,主要在mysql的my.ini文件中设置 ...
- Mycat实战之数据迁移(oracle -- mysql)
1.案例场景: Mycat 后面接一个 Oracle 实例与一个 MySQL 实例,假设用户表,订单表,转账记录表, Oracle 字符集为 GBK 的,MySQL 字符集则要求 UTF8的 完成用户 ...
- MYCAT实战之分片迁移
实践扩容 1.要求: travelrecord 表定义为10个分片,尝试将10个分片中的 2 个分片转移到第二台MySQL上, 并完成记录要求,最快的数据迁移做法,中断业务时间最短 2.针对分片以及迁 ...
- Mycat实战之主键数据库自增方式
创建一个 person表,主键为Id,hash方式分片,主键自增(采用数据库方式) #person表结构如下 Id,主键,Mycat自增主键 name,字符串,16字节最长 school,毕业学校,数 ...
- Mycat实战之离散分片
1 枚举分片(customer表) #### 1.1 修改配置信息加载配置文件 datanode hash-int vi partition-hash-int.txt db1=0 db2=1 [roo ...
- Mycat实战之连续分片
1 按照日期(天)分片: 从开始日期算起,按照天数来分片 例如,从2017-11-01,每10天一个分片且可以指定结束日期 注意事项:需要提前将分片规划好,建好,否则有可能日期超出实际配置分片数 1. ...
- Mycat实战之配置EP分片
ER分片介绍 以mycat逻辑库里面自带的例子,例如客户(CUSTOMER)跟订单(orders)以及订单条目(orders_item),订单条目依 赖订单表,订单表依赖客户,这样客户与订单以及订单条 ...
- Mycat实战之日志分析
环境搭建参见之前发的一篇:http://www.cnblogs.com/chinesern/p/7667106.html 1修改log4j.xml 配置增加其他级别调试以及验证是否自动加载 cat / ...
- Mycat实战之新增基于hash分片的表
1. 修改rule.xml hash分片规则 主要改两个地方: vi rule.xml 分片数量,这里改为3 对应 三个库 hash规则 默认是id列 这里为 PROVINCE 2. reload 加 ...
随机推荐
- C++ string类学习总结
C++字符串技术 string类 string对象在大多数应用中被用来消除对char*指针的使用,支持所期望的一些操作; 可以转换成char*,保持和现代代码的兼容性,还能自动处理内存管理; 一些s ...
- 学习《深入理解C#》—— 泛型 (第三章3.1---3.2)
泛型是什么? 泛型(generic)是C# 2.0和通用语言运行时(CLR)的一个新特性.泛型为.NET框架引入了类型参数(type parameters)的概念.类型参数使得设计类和方法时,不必确定 ...
- XAML 中使用空格键(空白字符)
默认情况下,XAML折叠所有空白,这意味着包含空格.tab 键以及回车的长字符串将被转换为单个空格.而且,如果在一个元素内容之前或之后添加空白,这个空格将被完全忽略. 有时这并不是所期望的结果.例如, ...
- C语言的代码内存布局详解
一个程序本质上都是由 BSS 段.data段.text段三个组成的.这样的概念在当前的计算机程序设计中是很重要的一个基本概念,而且在嵌入式系统的设计中也非常重要,牵涉到嵌入式系统运行时的内存大小分配, ...
- PostgreSQL的.NET驱动程序Npgsql中参数对象的一个Bug
最近将公司的项目从SqlServer移植到PostgreSQL数据库上来,在调用数据库的存储过程(自定义函数)的时候,发现一个奇怪的问题,老是报函数无法找到. 先看一个PgSQL存储过程: CREAT ...
- [黑金原创教程] FPGA那些事儿《设计篇 II》- 图像处理前夕·续
简介 一本为入门图像处理的入门书,另外还教你徒手搭建平台(片上系统),内容请看目录. 注意 为了达到最好的实验的结果,请准备以下硬件. AX301开发板, OV7670摄像模块, VGA接口显示器, ...
- 【BZOJ2792】[Poi2012]Well 二分+双指针法
[BZOJ2792][Poi2012]Well Description 给出n个正整数X1,X2,...Xn,可以进行不超过m次操作,每次操作选择一个非零的Xi,并将它减一. 最终要求存在某个k满足X ...
- 深入理解ByteBuffer
ByteBuffer类是在Java NIO中常常使用的一个缓冲区类,使用它可以进行高效的IO操作,但是,如果对常用方法的理解有错误,那么就会出现意想不到的bug. ByteBuffer类的常用方法 先 ...
- open live writer 代码着色插件
插件地址1: http://files.cnblogs.com/files/zsy/OpenLiveWriter.CNBlogs.SourceCode.zip 下载,解压,把里面的文件放到最新的 ap ...
- Ubuntu 16.04 安装 Phpmyadmin 出现的问题及解决
ubuntu 16.04 install phpmyadmin $ apt install phpmyadmin 安装时出现一个错误: An error occurred while installi ...