@wxf
2018-01-26T01:21:24.000000Z
字数 3776
阅读 1073
【实战课】MySql性能管理及架构设计
基准测试是针对系统设置的一种压力测试,用于评估服务器的处理能力。
mysqlslap工具是mysql自带的基准测试工具不需要安装。
mysqlslap --concurrency=1,50,100,200 --iterations=3 --number-int-cols=5 --number-char-cols=5 --auto-generate-sql --auto-generate-sql-add-autoincrement --engine=myisam,innodb --number-of-queries=10 --create-schema=sbtest -uroot -p
sysbench一款常用其非常全面的测试工具,使用灵活。
安装步骤
# 下载地址https://github.com/akopytov/sysbench/archive/0.5.zip# 解压包unzip sysbench-0.5.zip# 在sysbench-0.5中运行 ./autogen.shcd sysbench-0.5./autogen.sh# 配置参数信息./configure --with-mysql-includes=/usr/local/mysql/include --with-mysql-libs=/usr/local/mysql/lib# 编译安装make && make install
错误解决
sysbench 0.5中使用sysbench --help报错
[root@mvxl0781 bin]# sysbench --help
sysbench: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
# 环境变量配置文件vi /etc/profile# 添加mysql的环境变量配置信息export LD_LIBRARY_PATH=/usr/local/mysql/lib# 设置立即生效source /etc/profile
CPU性能测试(单核CPU性能)
sysbench --test=cpu --cpu-max-prime=10000 run# --test 表示测试类型# --cpu-max-prime 表示在CPU中计算的最大整数值
文件I/O性能测试
sysbench可以测试不同I/O负载下的性能。
# 查看系统内存free -m# 查看磁盘空间df -lh# 生成测试数据sysbench --test=fileio --file-total-size-2G prepare
sysbench --test=fileio --num-threads=8 --init-rng-on --file-total-size=2G --file-test-mode=rndrw --report-interval=2 run
数据库性能测试
sysbench --test=/usr/local/sysbench-0.5/sysbench/tests/db/oltp.lua --mysql-table-engine=innodb --oltp-table-size=10000 --mysql-db=imooc --mysql-user=root --mysql-password=ystdLinux! --oltp-tables-count=10 --mysql-socket=/usr/local/mysql/data/mysql.sock prepare
sysbench --test=/usr/local/sysbench-0.5/sysbench/tests/db/oltp.lua --mysql-table-engine=innodb --oltp-table-size=10000 --mysql-db=imooc --mysql-user=root --mysql-password=ystdLinux! --oltp-tables-count=10 --mysql-socket=/usr/local/mysql/data/mysql.sock run
获取测试结构的脚本
Get_Test_info.sh
#!/bin/bashINTERVAL=5PREFIX=/home/imooc/benchmarks/$INTERVAL-sec-statusRUNFILE=/home/imooc/benchmarks/runningecho "1" > $RUNFILEMYSQL=/usr/local/mysql/bin/mysql$MYSQL -e "show global variables" >> mysql-variableswhile test -e $RUNFILE; dofile=$(date +%F_%I)sleep=$(date +%s.%N | awk '{print 5 - ($1 % 5)}')sleep $sleepts="$(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 $tsdoneecho Exiting because $RUNFILE does not exists
analyze.sh
#!/bin/bashawk 'BEGIN {printf "#ts date time load QPS";fmt=" %.2f";}/^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}' "$@"
参考资料:sysbench 0.5 基准测试