Sysbench 測試 Percona XtraDB Server 效能

mysql_logo

今天拿 MySQL benchmark tool – Sysbench 來測試看看 Percona XtraDB Server + Haproxy 效能如何,實驗主機是執行在 CentOS 6.4 版本,記憶體 128 G,在 CentOS 本身用 Yum 安裝 Sysbench 時,內建的版本為 0.4.12,單機測試 MySQL 效能不會出現任何錯誤,但是只要是透過 Haproxy,並且有兩台以上的 Server,就會噴出底下錯誤訊息:

ALERT: failed to execute mysql_stmt_execute(): Err1317 Query execution was interrupted

碰到這問題,在網路上找到一篇 sysbench duplicate entries,裡面提到請使用 Sysbench 0.5.0 版本就不會噴出此錯誤,直接看 sysbench 0.5 for CentOS 6 這篇,裡面有 CentOS 64 打包好的 rpm package,下載後透過 rpm 指令安裝即可

$ rpm -ivh sysbench-0.5-3.el6_.x86_64.rpm

安裝完成,實際底下測試看看

建立測試用資料庫

請先建立 sbtest 資料庫

mysql> create database sbtest;

產生測試用資料

$ sysbench --test=oltp --db-driver=mysql --mysql-engine-trx=yes --mysql-table-engine=innodb --mysql-host=127.0.0.1 --mysql-port=3307 --mysql-user=xxxx --mysql-password=xxxxx --oltp-auto-inc=off --test=/usr/share/doc/sysbench/tests/db/oltp.lua --oltp-table-size=1000000 prepare

請注意 mysql-port 請務必填寫 Haproxy port,--oltp-table-size 用來產生多少筆資料,先產生 100 萬筆資料,大小大概是 270 MB

開始測試

$ sysbench --test=oltp --db-driver=mysql --mysql-engine-trx=yes --mysql-table-engine=innodb --mysql-host=127.0.0.1 --mysql-port=3307 --mysql-user=xxxx --mysql-password=xxxxx --oltp-auto-inc=off --test=/usr/share/doc/sysbench/tests/db/oltp.lua --oltp-table-size=100000 --num-threads=100 run

差別在於最後執行的步驟 run,上一個步驟則是 prepare

看結果

會跑出底下的數據給您參考

OLTP test statistics:
    queries performed:
        read:                            172102
        write:                           48943
        other:                           22293
        total:                           243338
    transactions:                        10000  (46.37 per sec.)
    deadlocks:                           2293   (10.63 per sec.)
    read/write requests:                 221045 (1025.00 per sec.)
    other operations:                    22293  (103.37 per sec.)

General statistics:
    total time:                          215.6540s
    total number of events:              10000
    total time taken by event execution: 21427.5778s
    response time:
         min:                                 53.45ms
         avg:                               2142.76ms
         max:                              22097.26ms
         approx.  95 percentile:            5689.02ms

Threads fairness:
    events (avg/stddev):           100.0000/43.42
    execution time (avg/stddev):   214.2758/0.75

清除測試資料

$ sysbench --test=oltp --db-driver=mysql --mysql-engine-trx=yes --mysql-table-engine=innodb --mysql-host=127.0.0.1 --mysql-port=3307 --mysql-user=xxx --mysql-password=xxx --oltp-auto-inc=off --test=/usr/share/doc/sysbench/tests/db/oltp.lua --oltp-table-size=1000000 cleanup

請直接下 cleanup 即可

參考資料: MySQL benchmark tool – sysbench