數據庫壓測工具Sysbench-0.4.12安裝

最近公司準備去oracle,遷移到mysql集羣。分佈式數據庫中間件咱們技術選型選擇了mycat。這無疑前期的準備工做須要作好,在運維同窗的幫助下,集羣已經搭建好,接下來咱們任務就是壓測。這篇文章簡單記錄我所選擇的壓測工具Sysbench的安裝和使用。

sysbench 簡介

Sysbench是一個模塊化的、跨平臺、多線程基準測試工具,主要用於評估測試各類不一樣系統參數下的數據庫負載狀況。它主要包括如下幾種方式的測試:cpu性能,磁盤io性能,線程調度性能,內存分配及傳輸速度和數據庫性能。因爲本人是dba,所以重點關注sysbench測試數據庫的場景。目前sysbench支持mysql,postgreSQL,oracle三種數據源。

測試環境

系統:Centos-8mysql

Sysbench:sysbench-0.4.12.10,下載地址:https://github.com/akopytov/sysbenchlinux

也能夠直接點擊下載: http://downloads.mysql.com/so...git

安裝步驟

sysbench的一些依賴安裝

yum -y install  make automake libtool pkgconfig libaio-devel vim-common
若是沒有安裝mysql,則須要安裝mysql-devel
yum install mysql-devel

安裝sysbench

  1. 進入到sysbench源碼目錄
cd /data/sysbench/sysbench-0.4.12
  1. 執行autogen.sh用它來生成configure這個文件
./autogen.sh
  1. 執行configure && make && make install 來完成sysbench的安裝
./configure --prefix=/wls/sysbench/ --build=x86_64 
make && make install

注:若是不添加--build=x86_64可能會提示以下錯誤:github

checking build system type... Invalid configuration `x86_64-unknown-linux-': machine `x86_64-unknown-linux' not recognized

configure: error: /bin/sh config/config.sub x86_64-unknown-linux- failed

驗證是否安裝成功

[root@05823ea529b0 sysbench-1.0.15]# /wls/sysbench/bin/sysbench --version
sysbench 0.4.12.10
[root@05823ea529b0 sysbench-1.0.15]# ./sysbench --test=cpu run
sysbench 0.4.12.10 (using bundled LuaJIT 2.1.0-beta2)

Running the test with following options:
Number of threads: 1
Initializing random number generator from current time


Prime numbers limit: 10000

Initializing worker threads...

Threads started!

CPU speed:
    events per second:  1158.09

General statistics:
    total time:                          10.0005s
    total number of events:              11583

Latency (ms):
         min:                                    0.79
         avg:                                    0.86
         max:                                    1.92
         95th percentile:                        1.01
         sum:                                 9985.69

Threads fairness:
    events (avg/stddev):           11583.0000/0.00
    execution time (avg/stddev):   9.9857/0.00

sysbench 查看幫助

Usage:
  sysbench [general-options]... --test=<test-name> [test-options]... command

General options:
  --num-threads=N             number of threads to use [1]
  --max-requests=N            limit for total number of requests [10000]
  --max-time=N                limit for total execution time in seconds [0]
  --forced-shutdown=STRING    amount of time to wait after --max-time before forcing shutdown [off]
  --thread-stack-size=SIZE    size of stack per thread [32K]
  --init-rng=[on|off]         initialize random number generator [off]
  --seed-rng=N                seed for random number generator, ignored when 0 [0]
  --tx-rate=N                 target transaction rate (tps) [0]
  --tx-jitter=N               target transaction variation, in microseconds [0]
  --report-interval=N         periodically report intermediate statistics with a specified interval in seconds. 0 disables intermediate reports [0]
  --report-checkpoints=[LIST,...]dump full statistics and reset all counters at specified points in time. The argument is a list of comma-separated values representing the amount of time in seconds elapsed from start of test when report checkpoint(s) must be performed. Report checkpoints are off by default. []
  --test=STRING               test to run
  --debug=[on|off]            print more debugging info [off]
  --validate=[on|off]         perform validation checks where possible [off]
  --help=[on|off]             print help and exit
  --version=[on|off]          print version and exit

Log options:
  --verbosity=N      verbosity level {5 - debug, 0 - only critical messages} [4]

  --percentile=N      percentile rank of query response times to count [95]

Compiled-in tests:
  fileio - File I/O test
  cpu - CPU performance test
  memory - Memory functions speed test
  threads - Threads subsystem performance test
  mutex - Mutex performance test
  oltp - OLTP test

Commands: prepare run cleanup help version

See 'sysbench --test=<name> help' for a list of options for each test.

sysbench 對數據庫進行壓力測試的過程

  • prepare 階段 這個階段是用來作準備的、比較說創建好測試用的表、並向表中填充數據;
  • run階段 這個階段是纔是去跑壓力測試的SQL;
  • cleanup 階段 這個階段是去清除數據的、也就是prepare階段初始化好的表要都drop掉;

sysbench 中的測試類型大體能夠分紅內置的,lua腳本自定義的測試

  1. 內置: fileio 、cpu 、memory 、threads 、 mutex
  2. lua腳本自定義型:sysbench 自身內涵了一些測試腳本放在了安裝目錄下:
查看幫忙命令:
[root@izwz909ewdz83smewux7a7z bin]# ./sysbench --help
Usage:
  sysbench [general-options]... --test=<test-name> [test-options]... command

General options:
  --num-threads=N             number of threads to use [1]
  --max-requests=N            limit for total number of requests [10000]
  --max-time=N                limit for total execution time in seconds [0]
  --forced-shutdown=STRING    amount of time to wait after --max-time before forcing shutdown [off]
  --thread-stack-size=SIZE    size of stack per thread [32K]
  --init-rng=[on|off]         initialize random number generator [off]
  --seed-rng=N                seed for random number generator, ignored when 0 [0]
  --tx-rate=N                 target transaction rate (tps) [0]
  --tx-jitter=N               target transaction variation, in microseconds [0]
  --report-interval=N         periodically report intermediate statistics with a specified interval in seconds. 0 disables intermediate reports [0]
  --report-checkpoints=[LIST,...]dump full statistics and reset all counters at specified points in time. The argument is a list of comma-separated values representing the amount of time in seconds elapsed from start of test when report checkpoint(s) must be performed. Report checkpoints are off by default. []
  --test=STRING               test to run
  --debug=[on|off]            print more debugging info [off]
  --validate=[on|off]         perform validation checks where possible [off]
  --help=[on|off]             print help and exit
  --version=[on|off]          print version and exit

Log options:
  --verbosity=N      verbosity level {5 - debug, 0 - only critical messages} [4]

  --percentile=N      percentile rank of query response times to count [95]

Compiled-in tests:
  fileio - File I/O test
  cpu - CPU performance test
  memory - Memory functions speed test
  threads - Threads subsystem performance test
  mutex - Mutex performance test
  oltp - OLTP test

Commands: prepare run cleanup help version

See 'sysbench --test=<name> help' for a list of options for each test.

經過sysbench自帶的lua腳本對mysql進行測試

  1. 生成表文件
[root@izwz909ewdz83smewux7a7z bin]# ./sysbench --test=oltp --oltp-num-tables=100000 --oltp-num-tables=10 --mysql-db=sysbench --mysql-user=root --mysql-password='mydb' --mysql-host=localhost --mysql-port=3306 --db-driver=mysql --init-rng=on prepare
  1. 多線程測試
[root@izwz909ewdz83smewux7a7z bin]# ./sysbench --test=oltp --oltp-table-size=100000 --mysql-db=sysbench --mysql-user=root --mysql-password='mydb' --mysql-host=localhost --mysql-port=3306 --db-driver=mysql --oltp-read-only=off --max-time=60 --num-threads=8 --report-interval=10 --oltp-dist-type=uniform --max-requests=0 --percentile=99 run
sysbench 0.4.12.10:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 8
Report intermediate results every 10 second(s)
Random number generator seed is 0 and will be ignored


Doing OLTP test.
Running mixed OLTP test
Using Uniform distribution
Using "BEGIN" for starting transactions
Using auto_inc on the id column
Using 1 test tables
Threads started!
[  10s] Intermediate results: 8 threads, tps: 582.994023, reads/s: 8233.315586, writes/s: 2940.469852 response time: 48.261058ms (99%)
[  20s] Intermediate results: 8 threads, tps: 589.090480, reads/s: 8248.666697, writes/s: 2945.952392 response time: 35.829896ms (99%)
[  30s] Intermediate results: 8 threads, tps: 487.603128, reads/s: 6829.243810, writes/s: 2439.015647 response time: 65.415122ms (99%)
[  40s] Intermediate results: 8 threads, tps: 487.700557, reads/s: 6830.607800, writes/s: 2439.502786 response time: 78.027721ms (99%)
[  50s] Intermediate results: 8 threads, tps: 478.852588, reads/s: 6703.936228, writes/s: 2394.262939 response time: 71.711459ms (99%)
[  60s] Intermediate results: 8 threads, tps: 510.752034, reads/s: 7150.528473, writes/s: 2553.760169 response time: 43.136643ms (99%)
Time limit exceeded, exiting...
(last message repeated 7 times)
Done.

OLTP test statistics:
    queries performed:
        read:                            440076    讀總數
        write:                           157170    寫總數
        other:                           62812    他操做總數(SELECT、INSERT、UPDATE、DELETE以外的操做,例如COMMIT等)
        total:                           660058    總數
    transactions:                        31378  (522.91 per sec.)    總事務數(每秒事務數)
    deadlocks:                           56     (0.93 per sec.)    
    read/write requests:                 597246 (9953.02 per sec.)    讀寫總數(每秒讀寫次數)
    other operations:                    62812  (1046.75 per sec.)

General statistics:
    total time:                          60.0065s    總耗時
    total number of events:              31378    共發生多少事務數
    total time taken by event execution: 479.8756    全部事務耗時相加(不考慮並行因素)
    response time:
         min:                                  3.77ms    最小耗時
         avg:                                 15.29ms    平均耗時
         max:                                180.78ms    最長耗時
         approx.  99 percentile:              58.12ms    超過99%平均耗時

Threads fairness:
    events (avg/stddev):           3922.2500/6.02
    execution time (avg/stddev):   59.9845/0.00
  1. 清理上面生成的測試表
[root@izwz909ewdz83smewux7a7z bin]# ./sysbench --test=oltp --oltp-num-tables=100000 --oltp-num-tables=10 --mysql-db=sysbench --mysql-user=root --mysql-password='mydb' --mysql-host=localhost --mysql-port=3306 --db-driver=mysql --init-rng=on cleanup
sysbench 0.4.12.10:  multi-threaded system evaluation benchmark

Dropping table 'sbtest'...
Dropping table 'sbtest1'...
Dropping table 'sbtest2'...
Dropping table 'sbtest3'...
Dropping table 'sbtest4'...
Dropping table 'sbtest5'...
Dropping table 'sbtest6'...
Dropping table 'sbtest7'...
Dropping table 'sbtest8'...
Dropping table 'sbtest9'...
Done.
[root@izwz909ewdz83smewux7a7z bin]#

因爲上面的命令都比較簡單,相信你們都能看明白,有什麼疑問也歡迎你們留言交流.sql

能夠對數據庫進行調優後,再使用sysbench對OLTP進行測試,看看TPS是否是會有所提升。docker

注意:sysbench的測試只是基準測試,並不能表明實際企業環境下的性能指標。shell

我的網站: http://coderluo.top數據庫

歡迎關注筆者公衆號: 愛上敲代碼, 會按期分享Java技術幹活,讓枯燥的技術遊起來!vim

掃碼關注

【本文最早發佈於此站,轉載請註明來源】: http://coderluo.top/2019/10/13/docker/docker-an-zhuang-centos8-bing-shi-yong-ssh-yuan-cheng-lian-jie/centos

相關文章
相關標籤/搜索