1. 程式人生 > >mycat實戰之性能測試

mycat實戰之性能測試

eas records 指定 finish 三臺 執行時間 fin rem 最好

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占用也小!

mycat實戰之性能測試