最近公司準備去oracle,遷移到mysql集羣。分佈式數據庫中間件咱們技術選型選擇了mycat。這無疑前期的準備工做須要作好,在運維同窗的幫助下,集羣已經搭建好,接下來咱們任務就是壓測。這篇文章簡單記錄我所選擇的壓測工具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
yum -y install make automake libtool pkgconfig libaio-devel vim-common 若是沒有安裝mysql,則須要安裝mysql-devel yum install mysql-devel
cd /data/sysbench/sysbench-0.4.12
./autogen.sh
./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
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.
查看幫忙命令: [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.
[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
[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
[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