sysbench是一款優(yōu)秀的性能測試工具根欧,可以對CPU/內(nèi)存/線程/IO/數(shù)據(jù)庫進行性能測試责球,一起來學習一下基本使用吧!以下內(nèi)容來自于慕課網(wǎng)的學習分享岛琼!
一、sysbench安裝
下載目錄:
https://github.com/akopytov/sysbench/archive/0.5.zip
解壓縮:
unzip sysbench-0.5.zip
進入目錄:
cd sysbench
執(zhí)行自動腳本:
./autogen.sh
編譯參數(shù)設置:
./configure --with-mysql-includes=/usr/local/mysql/include/
--with-mysql-libs=/usr/mysql/lib/
編譯:
make
安裝:
make install
二巢株、常用參數(shù)
--test FileIO:文件系統(tǒng)I/O性能測試 cpu:cpu性能測試
memory:內(nèi)存性能測試 Oltp:測試執(zhí)行具體的lua腳本
--mysql-db :執(zhí)行基準測試的數(shù)據(jù)庫名
--mysql-table-engine :執(zhí)行基準測試的存儲引擎
--oltp-tables-count :執(zhí)行測試表的數(shù)量
--oltp-table-size :執(zhí)行測試表中數(shù)據(jù)的行數(shù)
--num-threads :指定測試的并發(fā)線程的數(shù)量
--max-time :執(zhí)行的最大的測試時間
--report-interval :多長時間輸出一次統(tǒng)計信息
prepare :用于準備數(shù)據(jù)準備工作
run :開始進行測試
clear up :清除測試內(nèi)容
三槐瑞、基本測試
1-- cpu性能測試:計算素數(shù)到達10000的性能
sysbench --test=cpu --cpu-max-prime=10000 run
2-- 系統(tǒng)內(nèi)存IO密集型測試:使系統(tǒng)進入IO密集階段
查看系統(tǒng)內(nèi)存大小:
free -m
查看磁盤剩余空間:
df -lh
測試數(shù)據(jù)準備:
sysbench --test=fileio --file-total-size=1G prepare
開始進行測試:
sysbench --test=fileio --num-threads=8 --init-rng=8
--file-total-size=1G --file-test-mode=rndwr --report-interval=1 run
3-- 數(shù)據(jù)庫性能測試
建立數(shù)據(jù)庫:
create database xidian;
賦予用戶所有權限:
grant all privileges on *.* to lzw@'localhost' identified by 'Ichliebedich'
測試數(shù)據(jù)準備:
sysbench --test=./oltp.lua --mysql-table-engine=innodb
--olpt-table-size=10000 --mysql-db=xidian
--mysql-user=lzw --mysql-password=Ichliebedich --oltp-tables-count=10
--mysql-socket=/usr/local/mysql/data/mysql.sock prepare
收集系統(tǒng)狀態(tài):(后臺方式收集)
bash .test_info.sh &
開始進行測試:
sysbench --test=./oltp.lua --mysql-table-engine=innodb
--olpt-table-size=10000 --mysql-db=xidian
--mysql-user=lzw --mysql-password=Ichliebedich --oltp-tables-count=10
--mysql-socket=/usr/local/mysql/data/mysql.sock run
查看收集信息:(到執(zhí)行文件夾位置收集腳本)
- 用于收集測試信息腳本
# !/bin/bash
INTERVAL=5
PREFIX=/home/imooc/benchmarks/$INTERVAL-sec-status
#RUNFILE用于循環(huán)標志
RUNFILE=/home/imooc/benchmarks/running
echo "1" > $RUNFILE
MYSQL=/usr/local/mysql/bin/mysql
$MYSQL -e "show global variables" >> mysql-variables
while test -e $RUNFILE; do
file=$(date +%F_%I)
sleep=$(date +%s.%N | awk '{print 5 - ($1 % $5)})'
sleep $sleep
ts="$(date +"TS %s.%N %F %T")"
loadavg="$(uptime)"
echo "$ts $loadavg" >> $PREFIX-${file}-status
$MYSQL -e "show global status" >> $PREFIX-${file}-status &
echo "$ts $loadavg" >> $PREFIX-${file}-innodbstatus
$MYSQL -e "show engine innodb status" >> $PREFIX-${file}-innodbstatus &
echo "$ts $loadavg" >> $PREFIX-${file}-processlist
$MYSQL -e "show full processlist\G" >> $PREFIX-${file}-processlist &
echo $ts
done
echo Exiting because $RUNFILE does not exists
- 用于統(tǒng)計收集信息腳本
#阁苞!/bin/bash
# count test_info
awk '
BEGIN {
printf "#ts date time load QTS";
fmt=" %2.f";
}
/^TS/ {
ts = substr($2,1,index($2,".")-1);
load = NF - 2;
diff = ts - prev_ts;
printf "\n%s %s %s %s",ts,$3,$4,substr($load,1,length($load)-1);
prev_ts=ts;
}
/Queries/{
printf fmt,($2-Queries)/diff;
Queries=$2
}
' "$@"
四困檩、衡量指標
- 常用四個指標
TPS QPS 響應時間 并發(fā)量(與連接數(shù)不同)