sysbench是一款优秀的性能测试工具,可以对CPU/内存/线程/IO/数据库进行性能测试,一起来学习一下基本使用吧!以下内容来自于慕课网的学习分享!
一、sysbench安装
下载目录:
https://github.com/akopytov/sysbench/archive/0.5.zip
解压缩:
unzip sysbench-0.5.zip
进入目录:
cd sysbench
执行自动脚本:
./autogen.sh
编译参数设置:
./configure --with-mysql-includes=/usr/local/mysql/include/
--with-mysql-libs=/usr/mysql/lib/
编译:
make
安装:
make install
二、常用参数
--test FileIO:文件系统I/O性能测试 cpu:cpu性能测试
memory:内存性能测试 Oltp:测试执行具体的lua脚本
--mysql-db :执行基准测试的数据库名
--mysql-table-engine :执行基准测试的存储引擎
--oltp-tables-count :执行测试表的数量
--oltp-table-size :执行测试表中数据的行数
--num-threads :指定测试的并发线程的数量
--max-time :执行的最大的测试时间
--report-interval :多长时间输出一次统计信息
prepare :用于准备数据准备工作
run :开始进行测试
clear up :清除测试内容
三、基本测试
1-- cpu性能测试:计算素数到达10000的性能
sysbench --test=cpu --cpu-max-prime=10000 run
2-- 系统内存IO密集型测试:使系统进入IO密集阶段
查看系统内存大小:
free -m
查看磁盘剩余空间:
df -lh
测试数据准备:
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-- 数据库性能测试
建立数据库:
create database xidian;
赋予用户所有权限:
grant all privileges on *.* to lzw@'localhost' identified by 'Ichliebedich'
测试数据准备:
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
收集系统状态:(后台方式收集)
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
查看收集信息:(到执行文件夹位置收集脚本)
- 用于收集测试信息脚本
# !/bin/bash
INTERVAL=5
PREFIX=/home/imooc/benchmarks/$INTERVAL-sec-status
#RUNFILE用于循环标志
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
- 用于统计收集信息脚本
#!/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 响应时间 并发量(与连接数不同)
网友评论