#初始次数
round=0
# 一般至少跑3轮测试,我正常都会跑10轮以上
while [ $round -lt 4 ]
do
#每回合日志位置:
rounddir=$BASEDIR/logs-round${round}
mkdir -p ${rounddir}
for thread in `echo "${THERAD_NUMBER}"`
do
#常用可选项:
#oltp_read_only #只读
#oltp_read_write #读写兼有
#oltp_update_non_index #无主键更新情形
sysbench /usr/share/sysbench/oltp_read_only.lua \
--mysql-host=$DBIP \
--mysql-port=$DBPORT \
--mysql-user=$DBUSER \
--mysql-password=$DBPASSWD \
--mysql-db=$DBNAME \
--db-driver=mysql \
--tables=$TBLCNT \
--table-size=$ROWS \
--report-interval=$REPORT_INTERVAL \
--threads=${thread} \
--rand-type=uniform \ #数据随机类型:uniform,均匀的
--time=$DURING run >> ${rounddir}/sysbench_${thread}.log
sleep 300 #不同的线程数压测之间停顿5分钟
done
round=`expr $round + 1`
sleep 300 #每轮压测之间停顿5分钟
done
运行完毕后在预设的数据目录下可以找到sysbench输出的日志。
3.结果分析与绘图
可以直接阅读sysbench日志给出的总结,也可以对其中个别项的数据进行绘图观察趋势。
SQL statistics:
queries performed:
read: 142870
write: 0
other: 20410
total: 163280
transactions: 10205 (5.66 per sec.)
queries: 163280 (90.53 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 1803.6625s
total number of events: 10205
Latency (ms):
min: 3113.18
avg: 11303.55
max: 24222.47
95th percentile: 16819.24
sum: 115352747.29
Threads fairness:
events (avg/stddev): 159.4531/1.51
execution time (avg/stddev): 1802.3867/1.03
#我使用的是硬件资源十分有限的虚拟机,压测结果有点扎心。
安装gnuplot进行绘图,gnuplot需要图形环境,可以选择在windows上安装,也可以在施压客户机上安装图形界面。这里选择在linux施压客户机上安装图形界面。
dnf -y install @xfce-desktop #安装图形界面
yum -y install gnuplot #安装gnuplot
gnuplot #进入gnuplot终端
gnuplot>plot 'output/sysbench_8.log' using 9 w lines title 'QPS'
#using 5 表示使用第5列数据作图
#with lines 定义图中的趋势使用线来表示
#title 'QPS' 定义线的名称
#使用,(逗号)分割,进行多列数据的绘制
图形如下:只读压测QPS图形
通过其他脚本观察sysbench压测过程中的系统信息和数据库信息(来源于《高可用 MySQL》)