sysbench安裝、使用、出圖

背景

最近着迷於性能測試,遂學習一把壓測神器sysbench

sysbench是github上開源的項目

鏈接地址:https://github.com/akopytov/sysbench

通用安裝方法

1.clone and download選擇copy URL

2.cd /tmp --> Centos終端輸入git clone https://github.com/akopytov/sysbench.git

3.按照README.MD中源碼安裝指導一步步操作即可。
yum -y install make automake libtool pkgconfig libaio-devel
yum -y install mariadb-devel
./autogen.sh
./configure
make -j
make install

sysbench測試I/O

關鍵詞:隨機產生數據,測試不同磁盤,在不同磁盤目錄下執行命令

準備階段:sysbench --test=fileio --num-threads=4 --file-total-size=10G --file-test-mode=rndrw prepare

壓力測試階段:sysbench --test=fileio --num-threads=4 --file-total-size=10G --file-test-mode=rndrw run

清理數據階段:sysbench --test=fileio --num-threads=4 --file-total-size=10G --file-test-mode=rndrw cleanup

基礎名稱解析==壓測要關注什麼

TPS:Transactions Per Second,每秒傳輸的事務處理個數。這是指服務器每秒處理的事務數,是支持事務的存儲引擎特有的一個性能指標。

QPS:Queries Per Second,每秒查詢處理量,適用大多數存儲引擎。

tpmC:Transactions Per Minute,每分鐘處理的交易量,等同於TPS,是TPC-C的測試指標(tpcc-mysql)。

iops:每秒磁盤進行的I/O操作次數

iowait:一個採樣週期內有百分之幾的時間處於:CPU空閒、並且有仍未完成的I/O請求

svctm:設備處理請求的平均時間(ms)。指的是讀寫請求脫離linux內核調度,進入設備讀寫階段所耗時間。

%util:可以簡單的理解爲:單位時間內,設備繁忙比。比如,10秒鐘,有6秒在進行讀寫,則util = 60%。

每秒I/O字節數(I/O吞吐)

事務響應時間

I/O設備提供的設備級別IOPS、讀寫延時數據

一般要關注的指標

response time avg:平均響應時間

TPS and OPS

系統層面的cpu、io、mem相關指標

如何判定哪個測試模式性能更好

如果兩次tps/tpmC一樣,那麼誰的事務響應時間、iowait、svctm、%util、讀寫延時更低,就是誰更好

mysql壓測舉例

sysbench /tmp/sysbench/src/lua/oltp_read_write.lua \
--mysql-host=127.0.0.1 --mysql-port=3306 \
--mysql-user=sysbench --mysql-password=sysbench \
--mysql-db=sbtest --tables=10 --table-size=100000 --threads=1 \
--report-interval=10 --rand-type=uniform --max-time=300 \
--max-requests=0 --percentile=99 prepare/run/cleanup

結果指定到文件:
run >>./log/sysbench_oltpX_20180313.log

參數解釋:
./src/lua/oltp_read_write.lua 表示調用本腳本進行oltp模式測試
--mysql-db=sbtest 表示指定測試庫
--tables=10 表示生成10個測試表
--table-size=100000 表示每個測試表填充數據量爲100000

run模式的參數:
--threads=1 表示發起1個併發連接
--report-interval=10 表示每10秒輸出一次測試進度報告
--rand-type=uniform 表示隨機類型爲固定模式
--max-time=300 表示最大執行時長300秒
--max-requests=0 表示總請求數爲 0,因爲上面已經定義了總執行時長,所以總請求數可以設定爲 0;也可以只設定總請求數,不設定最大執行時長
--percentile=99 表示設定採樣比例,默認是 95%;即丟棄1%的長請求,在剩餘的99%裏取最大值

壓測三部曲

prepare:準備階段,準備數據
run:壓測執行
cleanup:壓測後馬上清理數據

每次壓測後要做什麼

每輪測試完成後,都重啓mysqld實例,並且用下面的方法刪除系統cache,釋放swap(如果用到了swap的話),甚至可以重啓整個OS
shell> sync --將髒數據刷新到磁盤
shell> echo 3 > /proc/sys/vm/drop_caches --清楚OS Cache
shell> swapoff -a && swapon -a

出圖

安裝windows客戶端,用於出圖
軟件:gp507-win64-mingw
下載url:https://jaist.dl.sourceforge.net/project/gnuplot/gnuplot/5.0.7/gp507-win64-mingw.exe
舉例:
plot 'C:\Users\limin\Downloads\20180314.log' using 7 with linespoint title 'vm1-TPS',
'C:\Users\limin\Downloads\20180314-10.log' using 7 with linespoint title 'vm2-TPS'
sysbench安裝、使用、出圖

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章