sysbench 壓測

IP架構

sysbench部署服務器:172.17.100.107mysql

壓測服務器:172.17.100.100git

MySQL部署目錄:/usr/local/mysqlgithub

 

前置工做sql

1.完成MySQL的安裝(MySQL5.7最新版本自動部署腳本:MySQL5.7自動部署腳本數據庫

2.完成動態庫文件的安裝vim

yum install -y openssl libtool  服務器


#可能遇到的報錯架構

1.在make以前,須要修改lib庫,不然會獲得一個報錯:/usr/bin/ld: cannot find -lmysqlclient_rapp

由於安裝中指向的lib是/usr/local/mysql/libide

cd /usr/local/mysql/lib

ln -s libmysqlclient.so.20.3.9 libmysqlclient_r.so

2.make的時候沒有明顯錯誤,執行./sysbench時報錯

./sysbench: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory

ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64

若是報錯爲

/usr/local/sysbench/bin/sysbench: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory

那麼就執行

ln -s /usr/local/mysql/lib/libmysqlclient.so.20 /usr/lib64


 

sysbench安裝部分

①葉總優化版(在MGR測試中有坑...常規版本已經更新在文末)

先說一下這個坑:在對單機測試和主從環境的測試中,葉總的版本可用;

可是在後面完成MGR搭建後採用該sysbench進行測試,會出現1032(主鍵衝突)的報錯,目前暫時沒有對該報錯進行深刻研究,只是肯定通過大約反反覆覆10餘次測試(中途重裝2次MGR)均出現了報錯;

 

下載

在葉總的網站去把sysbench壓縮包下載下來

wget http://imysql.com/wp-content/uploads/2014/09/sysbench-0.4.12-1.1.tgz

 

部署

tar -xf sysbench-0.4.12-1.1.tgz

mv sysbench-0.4.12-1.1 sysbench

cp -r sysbench /usr/local/sysbench

 

cd /usr/local/sysbench

./autogen.sh

#生成configure文件

./configure --prefix=/usr/local/sysbench/ --with-mysql-includes=/usr/local/mysql/include/ --with-mysql-libs=/usr/local/mysql/lib/

注意此處的includes必須是mysql對應的include目錄,libs也是mysql對應的lib目錄

 

完成安裝

make&&make install

(確認沒有報錯)

 

驗證安裝

/usr/local/sysbench/bin/sysbench --help

若是出現下列文字,說明部署成功

[root@GTID01 bin]# /usr/local/sysbench/bin/sysbench --help

Missing required command argument.Usage: sysbench [general-options]... --test= [test-options]... command

General options:

  --num-threads=N            number of threads to use [1]

  --max-requests=N            limit for total number of requests [10000]

...

 

增長環境變量

echo -e "export PATH=\$PATH:/usr/local/sysbench/bin" >> /etc/profile

source /etc/profile


使用sysbench進行測試的準備工做

前置閱讀:sysbench中的lua腳本詳解


 

使用sysbench進行測試

先到被測試的庫裏建庫,建用戶,受權(這裏經過107去測試100庫)

mysql -h 172.17.100.100 -uroot -p

...

create database sbtest; ##由於lua腳本里面這裏設置的就是sbtest庫,庫名須要與腳本里的內容保持一致

create user tpcc@'172.17.100.%' identified by 'tpcc';

grant all privileges on sbtest.* to tpcc@'172.17.100.%';

flush privileges;

 


會產生報錯的操做(將oltp.lua中的mysiam修改爲innodb後,會找不到表)

cd /usr/local/sysbench/sysbench/tests/db/

cp oltp.lua oltp_innodb.lua

sed -i 's/myisam/innodb/g' /usr/local/sysbench/sysbench/tests/db/oltp_innodb.lua


 

測試多表的壓測(根據葉總的視頻,sysbench支持percona多表,但不支持官方版本,不過我在測試中並未發現官方版本不能使用sysbench的狀況)

執行prepare

sysbench --mysql-host=172.17.100.100 --mysql-port=3306 --mysql-user=tpcc --mysql-password=tpcc --test=/usr/local/sysbench/sysbench/tests/db/oltp.lua --oltp_tables_count=10 --oltp-table-size=100000 --rand-init=on prepare

...

sysbench 0.5: multi-threaded system evaluation benchmark

Creating table 'sbtest1'...

Inserting 100000 records into 'sbtest1'

...

Creating table 'sbtest10'...

Inserting 100000 records into 'sbtest10

 

執行run

sysbench --mysql-host=172.17.100.100 --mysql-port=3306 --mysql-user=tpcc --mysql-password=tpcc --test=/usr/local/sysbench/sysbench/tests/db/oltp.lua --oltp_tables_count=10 --oltp-table-size=100000 --num-threads=4 --oltp-read-only=off --report-interval=5 --rand-type=uniform --max-time=30 --max-requests=0 --percentile=99 run

 

--num-threads=4    //線程數爲4

--max-time=30      //測試時間爲30s

--report-interval=5    //報告打印週期爲5s

--oltp-read-only=off    //非只讀操做測試

--max-requests=0                //最大執行次數這裏不作限制,只由max-time進行限制

 

4線程

 
 

8線程

 
 

16線程

 
 

read: 38024     //讀總數,select語句

write: 10864    //寫總數,insert、delete、update語句

other: 5432     //其它語句,如commit等

total: 54320           //總的執行語句數

transactions: 2716 (90.31 per sec.)  //總的事物數(★每秒處理事物數:TPS★)

read/write requests: 48888 (1625.67 per sec.)  //讀寫請求次數(★每秒的讀寫次數:QPS★)

other operations: 5432 (180.63 per sec.)    //其它操做的每秒執行數

General statistics:

total time: 30.0726s        //總時間

total number of events: 2716    //★事物總數★

total time taken by event execution: 480.7371s   //全部事務耗時相加(不考慮並行因素)

response time:    //應答時間

min: 21.62ms    //最小

avg: 177ms    //平均

max: 598.59ms    //最大

approx. 99 percentile: 421.51ms  //99%語句執行時間

Threads fairness:  //線程公平性

events (avg/stddev): 169.7500/2.38

execution time (avg/stddev): 30.0461/0.02

 

須要重點關注的幾個測試結果

★總的事物數,每秒事務數TPS,QPS,時間統計信息(最大、最小、平均、99%以上語句響應時間)★

經過sysbench結果來斷定數據庫的能力主要仍是經過TPS

 

執行清除

sysbench --mysql-host=172.17.100.100 --mysql-port=3306 --mysql-user=tpcc --mysql-password=tpcc --mysql-db=sbtest --oltp-tables-count=10 --oltp-table-size=100000 --num-threads=16 --max-requests=0 --max-time=30 --report-interval=1 --test=/usr/local/sysbench/sysbench/tests/db/oltp.lua cleanup

sysbench 0.5: multi-threaded system evaluation benchmark

Dropping table 'sbtest1'...

Dropping table 'sbtest2'...

Dropping table 'sbtest3'...

 


②原始版本(該版本目前只測試了MGR環境,常規環境沒有驗證過,但應該沒有問題)

大致的安裝和葉總版本差很少,這裏就寫的簡略一些了

前置條件準備

yum install -y openssl libtool gcc make automake pkgconfig libaio-devel vim-common

下載並安裝

wget https://github.com/akopytov/sysbench/archive/master.zip

tar -xf master.zip

mkdir -p /usr/local/sysbench/

cd sysbench-master/

./autogen.sh

./configure --prefix=/usr/local/sysbench/ --with-mysql --with-mysql-includes=/usr/local/mysql/include --with-mysql-libs=/usr/local/mysql/lib

make

make install

#若是後面驗證那一步報錯是18,就把下面的20換成18,反正我CenOS6.8的環境不執行下面這句都是報20的錯

ln -s /usr/local/mysql/lib/libmysqlclient.so.20 /usr/lib64

echo -e "export PATH=\$PATH:/usr/local/sysbench/bin" >> /etc/profile

source /etc/profile

#驗證

sysbench --version

#自行去目標數據庫完成建用戶(tpcc/tpcc),建庫(sbtest)

執行測試

sysbench /usr/local/sysbench/share/sysbench/oltp_read_write.lua --mysql-host=172.17.100.101 --mysql-port=3306 --mysql-user=tpcc --mysql-password=tpcc --mysql-db=sbtest --tables=5 --table_size=100000 --mysql_storage_engine=Innodb prepare

sysbench /usr/local/sysbench/share/sysbench/oltp_read_write.lua --mysql-host=172.17.100.101 --mysql-port=3306 --mysql-user=tpcc --mysql-password=tpcc --mysql-db=sbtest --tables=5 --table_size=100000 --mysql_storage_engine=Innodb --threads=3 --time=600 --warmup-time=10 --report-interval=10 --rand-type=uniform run

曬一個測試圖(針對MGR組的單主庫進行寫操做)

 
做者:飛翔的Tallgeese 連接:https://www.jianshu.com/p/d0abdc29cd7a 來源:簡書 簡書著做權歸做者全部,任何形式的轉載都請聯繫做者得到受權並註明出處。
相關文章
相關標籤/搜索