使用tpcc-mysql對mysql進行TPCC效能測試
tpcc-mysq是滿足TPCC規範的效能測試工具,具體步驟如下:
1、下載
從下載安裝包。
2、安裝
[root@D2-LZY245 ~]# unzip tpcc-mysql-master.zip
[root@D2-LZY245 ~]# cd tpcc-mysql-master/src/
[root@D2-LZY245 src]# make
[root@D2-LZY245 ~]# ll tpcc-mysql-master/tpcc_*
-rwxrwxr-x 1 root root 81114 May 19 15:12 tpcc-mysql-master/tpcc_load
-rwxrwxr-x 1 root root 188582 May 19 15:13 tpcc-mysql-master/tpcc_start
編譯完成後,就有了tpcc_load和tpcc_start這兩個指令碼。tpcc_load用於初始化資料,tpcc_start用於執行基準測試。
3、載入
[root@D2-LZY245 ~]# mysqladmin -uroot -p123456 create tpcc
[root@D2-LZY245 ~]# mysql -uroot -p123456 tpcc < /root/tpcc-mysql-master/create_table.sql
[root@D2-LZY245 ~]# mysql -uroot -p123456 tpcc < /root/tpcc-mysql-master/add_fkey_idx.sql
[root@D2-LZY245 ~]# cd /root/tpcc-mysql-master/
[root@D2-LZY245 tpcc-mysql-master]# ./tpcc_load -h127.0.0.1 -dtpcc -uroot -p123456 -w5
其中w表示倉庫的數量,數量越多,資料量也越大,這裡只初始化了5個倉庫。在生產環境中建議設定至少100以上。
如果提示找不到libmysqlclient.so.20,則需要建立下面的軟連線:
[root@D2-LZY245 ~]# ln -s /usr/local/mysql/lib/libmysqlclient.so.20 /usr/lib64/libmysqlclient.so.20
4、測試
配置如下引數:
max_connections=3000
innodb_buffer_pool_size=1G
innodb_flush_log_at_trx_commit = 1
sync_binlog=1
innodb_support_xa=1
開始測試:
[root@D2-LZY245 tpcc-mysql-master]# ./tpcc_start -h127.0.0.1 -P3306 -dtpcc -uroot -p123456 -w5 -c10 -r10 -l60 -i5
***************************************
*** ###easy### TPC-C Load Generator ***
***************************************
option h with value '127.0.0.1'
option P with value '3306'
option d with value 'tpcc'
option u with value 'root'
option p with value '123456'
option w with value '5'
option c with value '10'
option r with value '10'
option l with value '60'
option i with value '5'
[server]: 127.0.0.1
[port]: 3306
[DBname]: tpcc
[user]: root
[pass]: 123456
[warehouse]: 5
[connection]: 10
[rampup]: 10 (sec.)
[measure]: 60 (sec.)
RAMP-UP TIME.(10 sec.)
MEASURING START.
5, trx: 893, 95%: 42.974, 99%: 51.769, max_rt: 78.867, 897|64.315, 89|34.091, 90|108.740, 89|153.851
10, trx: 899, 95%: 42.513, 99%: 47.764, max_rt: 56.527, 897|45.126, 90|11.137, 90|107.048, 90|151.175
15, trx: 921, 95%: 41.732, 99%: 48.921, max_rt: 74.593, 919|61.086, 93|11.268, 91|122.762, 91|117.930
20, trx: 905, 95%: 42.184, 99%: 47.308, max_rt: 72.272, 906|38.270, 90|10.840, 92|126.833, 91|138.162
25, trx: 918, 95%: 42.260, 99%: 51.183, max_rt: 66.282, 914|39.754, 92|10.141, 91|126.593, 91|127.785
30, trx: 934, 95%: 42.285, 99%: 50.212, max_rt: 56.423, 939|37.721, 93|12.561, 93|114.696, 94|133.147
35, trx: 948, 95%: 41.532, 99%: 49.808, max_rt: 59.926, 945|35.327, 95|6.179, 95|104.323, 95|125.155
40, trx: 949, 95%: 40.562, 99%: 46.411, max_rt: 65.310, 950|49.201, 95|7.696, 96|117.888, 94|131.387
45, trx: 953, 95%: 40.067, 99%: 46.689, max_rt: 61.701, 955|50.164, 95|5.216, 95|110.307, 96|118.410
50, trx: 953, 95%: 40.537, 99%: 47.864, max_rt: 87.589, 950|48.743, 95|6.670, 95|118.108, 95|138.823
55, trx: 947, 95%: 39.995, 99%: 46.203, max_rt: 62.354, 948|41.478, 95|6.599, 94|114.913, 95|132.025
60, trx: 986, 95%: 40.477, 99%: 45.516, max_rt: 59.243, 982|37.025, 98|8.749, 99|105.574, 99|127.634
STOPPING THREADS..........
[0] sc:44 lt:11162 rt:0 fl:0 avg_rt: 32.3 (5)
[1] sc:1734 lt:9468 rt:0 fl:0 avg_rt: 9.3 (5)
[2] sc:1063 lt:57 rt:0 fl:0 avg_rt: 3.3 (5)
[3] sc:690 lt:431 rt:0 fl:0 avg_rt: 90.5 (80)
[4] sc:0 lt:1120 rt:0 fl:0 avg_rt: 114.3 (20)
in 60 sec.
[0] sc:44 lt:11162 rt:0 fl:0
[1] sc:1734 lt:9469 rt:0 fl:0
[2] sc:1063 lt:57 rt:0 fl:0
[3] sc:690 lt:431 rt:0 fl:0
[4] sc:0 lt:1120 rt:0 fl:0
(all must be [OK])
[transaction percentage]
Payment: 43.47% (>=43.0%) [OK]
Order-Status: 4.35% (>= 4.0%) [OK]
Delivery: 4.35% (>= 4.0%) [OK]
Stock-Level: 4.35% (>= 4.0%) [OK]
[response time (at least 90% passed)]
New-Order: 0.39% [NG] *
Payment: 15.48% [NG] *
Order-Status: 94.91% [OK]
Delivery: 61.55% [NG] *
Stock-Level: 0.00% [NG] *
11206.000 TpmC
其中:
-w:倉庫數量
-c:併發執行緒數
-r:預熱時間,以秒為單位,預設10秒,主要目的是為了將資料載入到記憶體。
-l:執行時間,以秒為單位,預設20秒
-i:輸出時間間隔
真實測試場景中,建議預熱時間不小於5分鐘,持續壓測時長不小於30分鐘,否則測試資料可能不具參考意義。
5、結果
5, trx: 893, 95%: 42.974, 99%: 51.769, max_rt: 78.867, 897|64.315, 89|34.091, 90|108.740, 89|153.851
5表示從測試開始到現在的時間為5秒。
trx: 893表示這個時間間隔完成的新訂單事物數量,實際上就是吞吐量,越大越好。
95%: 42.974表示這個時間間隔內95%的新訂單事物響應時間為42.974秒。
99%: 51.769表示這個時間間隔內99%的新訂單事物響應時間為51.769秒。
max_rt: 78.867表示這個時間間隔內新訂單事物最大響應時間為78.867秒。
897|64.315, 89|34.091, 90|108.740, 89|153.851這幾個表示其他種類事物的吞吐量和響應時間,可以忽略。
[0] sc:44 lt:11162 rt:0 fl:0 avg_rt: 32.3 (5) //表示新訂單業務成功(success,簡寫sc)次數,延遲(late,簡寫lt)次數,重試(retry,簡寫rt)次數,失敗(failure,簡寫fl)次數。
[1] sc:1734 lt:9468 rt:0 fl:0 avg_rt: 9.3 (5) //表示支付業務成功(success,簡寫sc)次數,延遲(late,簡寫lt)次數,重試(retry,簡寫rt)次數,失敗(failure,簡寫fl)次數。
[2] sc:1063 lt:57 rt:0 fl:0 avg_rt: 3.3 (5) //表示訂單狀態業務成功(success,簡寫sc)次數,延遲(late,簡寫lt)次數,重試(retry,簡寫rt)次數,失敗(failure,簡寫fl)次數。
[3] sc:690 lt:431 rt:0 fl:0 avg_rt: 90.5 (80) //表示發貨業務成功(success,簡寫sc)次數,延遲(late,簡寫lt)次數,重試(retry,簡寫rt)次數,失敗(failure,簡寫fl)次數。
[4] sc:0 lt:1120 rt:0 fl:0 avg_rt: 114.3 (20) //表示庫存業務成功(success,簡寫sc)次數,延遲(late,簡寫lt)次數,重試(retry,簡寫rt)次數,失敗(failure,簡寫fl)次數。
(all must be [OK]) //下面所有的結果必須為OK
[transaction percentage]
Payment: 43.47% (>=43.0%) [OK] //支付模組佔總業務的43.47%
Order-Status: 4.35% (>= 4.0%) [OK] //訂單狀態模組佔總業務的4.35%
Delivery: 4.35% (>= 4.0%) [OK] //發貨模組佔總業務的4.35%
Stock-Level: 4.35% (>= 4.0%) [OK] //庫存模組佔總業務的4.35%
[response time (at least 90% passed)] //響應時間是否滿足
New-Order: 0.39% [NG] *
Payment: 15.48% [NG] *
Order-Status: 94.91% [OK]
Delivery: 61.55% [NG] *
Stock-Level: 0.00% [NG] *
指標如下:
New-Order 5ms
Payment 5ms
Order-Status 5ms
Delivery 80ms
Stock-Level 20ms
11206.000 TpmC //每分鐘能夠處理的新訂單數量。
1、下載
從下載安裝包。
2、安裝
[root@D2-LZY245 ~]# unzip tpcc-mysql-master.zip
[root@D2-LZY245 ~]# cd tpcc-mysql-master/src/
[root@D2-LZY245 src]# make
[root@D2-LZY245 ~]# ll tpcc-mysql-master/tpcc_*
-rwxrwxr-x 1 root root 81114 May 19 15:12 tpcc-mysql-master/tpcc_load
-rwxrwxr-x 1 root root 188582 May 19 15:13 tpcc-mysql-master/tpcc_start
編譯完成後,就有了tpcc_load和tpcc_start這兩個指令碼。tpcc_load用於初始化資料,tpcc_start用於執行基準測試。
3、載入
[root@D2-LZY245 ~]# mysqladmin -uroot -p123456 create tpcc
[root@D2-LZY245 ~]# mysql -uroot -p123456 tpcc < /root/tpcc-mysql-master/create_table.sql
[root@D2-LZY245 ~]# mysql -uroot -p123456 tpcc < /root/tpcc-mysql-master/add_fkey_idx.sql
[root@D2-LZY245 ~]# cd /root/tpcc-mysql-master/
[root@D2-LZY245 tpcc-mysql-master]# ./tpcc_load -h127.0.0.1 -dtpcc -uroot -p123456 -w5
其中w表示倉庫的數量,數量越多,資料量也越大,這裡只初始化了5個倉庫。在生產環境中建議設定至少100以上。
如果提示找不到libmysqlclient.so.20,則需要建立下面的軟連線:
[root@D2-LZY245 ~]# ln -s /usr/local/mysql/lib/libmysqlclient.so.20 /usr/lib64/libmysqlclient.so.20
4、測試
配置如下引數:
max_connections=3000
innodb_buffer_pool_size=1G
innodb_flush_log_at_trx_commit = 1
sync_binlog=1
innodb_support_xa=1
開始測試:
[root@D2-LZY245 tpcc-mysql-master]# ./tpcc_start -h127.0.0.1 -P3306 -dtpcc -uroot -p123456 -w5 -c10 -r10 -l60 -i5
***************************************
*** ###easy### TPC-C Load Generator ***
***************************************
option h with value '127.0.0.1'
option P with value '3306'
option d with value 'tpcc'
option u with value 'root'
option p with value '123456'
option w with value '5'
option c with value '10'
option r with value '10'
option l with value '60'
option i with value '5'
[server]: 127.0.0.1
[port]: 3306
[DBname]: tpcc
[user]: root
[pass]: 123456
[warehouse]: 5
[connection]: 10
[rampup]: 10 (sec.)
[measure]: 60 (sec.)
RAMP-UP TIME.(10 sec.)
MEASURING START.
5, trx: 893, 95%: 42.974, 99%: 51.769, max_rt: 78.867, 897|64.315, 89|34.091, 90|108.740, 89|153.851
10, trx: 899, 95%: 42.513, 99%: 47.764, max_rt: 56.527, 897|45.126, 90|11.137, 90|107.048, 90|151.175
15, trx: 921, 95%: 41.732, 99%: 48.921, max_rt: 74.593, 919|61.086, 93|11.268, 91|122.762, 91|117.930
20, trx: 905, 95%: 42.184, 99%: 47.308, max_rt: 72.272, 906|38.270, 90|10.840, 92|126.833, 91|138.162
25, trx: 918, 95%: 42.260, 99%: 51.183, max_rt: 66.282, 914|39.754, 92|10.141, 91|126.593, 91|127.785
30, trx: 934, 95%: 42.285, 99%: 50.212, max_rt: 56.423, 939|37.721, 93|12.561, 93|114.696, 94|133.147
35, trx: 948, 95%: 41.532, 99%: 49.808, max_rt: 59.926, 945|35.327, 95|6.179, 95|104.323, 95|125.155
40, trx: 949, 95%: 40.562, 99%: 46.411, max_rt: 65.310, 950|49.201, 95|7.696, 96|117.888, 94|131.387
45, trx: 953, 95%: 40.067, 99%: 46.689, max_rt: 61.701, 955|50.164, 95|5.216, 95|110.307, 96|118.410
50, trx: 953, 95%: 40.537, 99%: 47.864, max_rt: 87.589, 950|48.743, 95|6.670, 95|118.108, 95|138.823
55, trx: 947, 95%: 39.995, 99%: 46.203, max_rt: 62.354, 948|41.478, 95|6.599, 94|114.913, 95|132.025
60, trx: 986, 95%: 40.477, 99%: 45.516, max_rt: 59.243, 982|37.025, 98|8.749, 99|105.574, 99|127.634
STOPPING THREADS..........
[0] sc:44 lt:11162 rt:0 fl:0 avg_rt: 32.3 (5)
[1] sc:1734 lt:9468 rt:0 fl:0 avg_rt: 9.3 (5)
[2] sc:1063 lt:57 rt:0 fl:0 avg_rt: 3.3 (5)
[3] sc:690 lt:431 rt:0 fl:0 avg_rt: 90.5 (80)
[4] sc:0 lt:1120 rt:0 fl:0 avg_rt: 114.3 (20)
in 60 sec.
[0] sc:44 lt:11162 rt:0 fl:0
[1] sc:1734 lt:9469 rt:0 fl:0
[2] sc:1063 lt:57 rt:0 fl:0
[3] sc:690 lt:431 rt:0 fl:0
[4] sc:0 lt:1120 rt:0 fl:0
(all must be [OK])
[transaction percentage]
Payment: 43.47% (>=43.0%) [OK]
Order-Status: 4.35% (>= 4.0%) [OK]
Delivery: 4.35% (>= 4.0%) [OK]
Stock-Level: 4.35% (>= 4.0%) [OK]
[response time (at least 90% passed)]
New-Order: 0.39% [NG] *
Payment: 15.48% [NG] *
Order-Status: 94.91% [OK]
Delivery: 61.55% [NG] *
Stock-Level: 0.00% [NG] *
11206.000 TpmC
其中:
-w:倉庫數量
-c:併發執行緒數
-r:預熱時間,以秒為單位,預設10秒,主要目的是為了將資料載入到記憶體。
-l:執行時間,以秒為單位,預設20秒
-i:輸出時間間隔
真實測試場景中,建議預熱時間不小於5分鐘,持續壓測時長不小於30分鐘,否則測試資料可能不具參考意義。
5、結果
5, trx: 893, 95%: 42.974, 99%: 51.769, max_rt: 78.867, 897|64.315, 89|34.091, 90|108.740, 89|153.851
5表示從測試開始到現在的時間為5秒。
trx: 893表示這個時間間隔完成的新訂單事物數量,實際上就是吞吐量,越大越好。
95%: 42.974表示這個時間間隔內95%的新訂單事物響應時間為42.974秒。
99%: 51.769表示這個時間間隔內99%的新訂單事物響應時間為51.769秒。
max_rt: 78.867表示這個時間間隔內新訂單事物最大響應時間為78.867秒。
897|64.315, 89|34.091, 90|108.740, 89|153.851這幾個表示其他種類事物的吞吐量和響應時間,可以忽略。
[0] sc:44 lt:11162 rt:0 fl:0 avg_rt: 32.3 (5) //表示新訂單業務成功(success,簡寫sc)次數,延遲(late,簡寫lt)次數,重試(retry,簡寫rt)次數,失敗(failure,簡寫fl)次數。
[1] sc:1734 lt:9468 rt:0 fl:0 avg_rt: 9.3 (5) //表示支付業務成功(success,簡寫sc)次數,延遲(late,簡寫lt)次數,重試(retry,簡寫rt)次數,失敗(failure,簡寫fl)次數。
[2] sc:1063 lt:57 rt:0 fl:0 avg_rt: 3.3 (5) //表示訂單狀態業務成功(success,簡寫sc)次數,延遲(late,簡寫lt)次數,重試(retry,簡寫rt)次數,失敗(failure,簡寫fl)次數。
[3] sc:690 lt:431 rt:0 fl:0 avg_rt: 90.5 (80) //表示發貨業務成功(success,簡寫sc)次數,延遲(late,簡寫lt)次數,重試(retry,簡寫rt)次數,失敗(failure,簡寫fl)次數。
[4] sc:0 lt:1120 rt:0 fl:0 avg_rt: 114.3 (20) //表示庫存業務成功(success,簡寫sc)次數,延遲(late,簡寫lt)次數,重試(retry,簡寫rt)次數,失敗(failure,簡寫fl)次數。
(all must be [OK]) //下面所有的結果必須為OK
[transaction percentage]
Payment: 43.47% (>=43.0%) [OK] //支付模組佔總業務的43.47%
Order-Status: 4.35% (>= 4.0%) [OK] //訂單狀態模組佔總業務的4.35%
Delivery: 4.35% (>= 4.0%) [OK] //發貨模組佔總業務的4.35%
Stock-Level: 4.35% (>= 4.0%) [OK] //庫存模組佔總業務的4.35%
[response time (at least 90% passed)] //響應時間是否滿足
New-Order: 0.39% [NG] *
Payment: 15.48% [NG] *
Order-Status: 94.91% [OK]
Delivery: 61.55% [NG] *
Stock-Level: 0.00% [NG] *
指標如下:
New-Order 5ms
Payment 5ms
Order-Status 5ms
Delivery 80ms
Stock-Level 20ms
11206.000 TpmC //每分鐘能夠處理的新訂單數量。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28536251/viewspace-2139708/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Tpcc-mysql】Tpcc-mysql測試MySql
- mysql效能測試工具之tpcc-mysql薦MySql
- TPCC-MySQL基準測試MySql
- 【工具】TPCC-MySQL 測試結果詳解MySql
- 【工具】基準測試工具之tpcc-mysqlMySql
- tpcc-mysql 壓測報告MySql
- MySQL 基準測試工具tpcc-mysql使用手冊及報告分析MySql
- tpcc-mysql的工作原理MySql
- 【原創】安裝和使用TPCC-MySQL工具遇到的問題MySql
- 使用python對oracle進行簡單效能測試PythonOracle
- 【java】使用jprofiler進行效能測試Java
- 使用Sysbench對滴滴雲MySQL進行基準測試MySql
- 使用 Sysbench 進行 Linux 效能測試Linux
- 用mysqlslap對MySQL進行壓力測試MySql
- 使用Iperf工具進行網路效能測試
- 使用YCSB工具工具進行cassandra效能測試
- 使用QTP進行WEB頁面效能測試QTWeb
- 使用sysbench測試Mysql效能MySql
- 對node工程進行壓力測試與效能分析
- 使用ab對nginx進行壓力測試Nginx
- 使用Bonnie進行系統IO效能測試 (zt)
- 使用 locust 對 mysql 語句進行壓測MySql
- 使用 sysbench 測試 MySQL 的效能MySql
- 第 83 期對 Go 程式進行可靠的效能測試Go
- 效能測試進階實踐篇:10分鐘教你使用JMeter進行websocket測試!JMeterWeb
- 如何使用hammerdb進行MySQL基準測試MySql
- 【TEST】Oracle19c使用benchmarksql進行效能測試OracleSQL
- 使用 sysbench 測試 MySQL 的效能(二)MySql
- 使用Jest對原生TypeScript專案進行UI測試TypeScriptUI
- 使用 HTTPie 進行 API 測試HTTPAPI
- 使用PostMan進行API測試PostmanAPI
- 華納雲:如何使用HammerDB進行MySQL基準測試MySql
- MYSQL 寫效能測試MySql
- MySQL索引效能測試MySql索引
- 測試前奏 之 Robotium使用Eclipse和ADT對apk進行黑盒測試EclipseAPK
- JMeter 如何與 MySQL 進行整合測試JMeterMySql
- 【MySQL】利用sysbench進行基準測試MySql
- 什麼情況下進行效能測試