一、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 响应时间 并发量(与连接数不同)