2.1 基准测试完成的工作内容
- 1.验证系统的Bug
- 2.测试当前系统的压力负载
- 3.模拟高于当前的压力负载,为未来提供必要的策略
2.2 基准测试的策略
主要分成系统的整体测试和单独组件测试,系统的整体测试主要包含服务器、网络、数据库、应用程序等。单独组件测试只需要关注部分的组件,通过验证获取组件的性能数据。
2.3 编写获取MySQL性能测试脚本
下面是一个收集MySQL的shell脚本 mysqlbenchmark.sh
#!/bin/shINTERVAL=5PREFIX=$INTERVAL-sec-statusRUNFILE=/home/benchmarks/runningmysql -uroot -p111111 -h127.0.0.1 -e 'SHOW GLOBAL VARIABLES' >> mysql-variableswhile test -e $RUNFILE; dofile=$(date +%F_%I)sleep=$(date +%s.%N | awk "{print $INTERVAL - (\$1 % $INTERVAL)}")sleep $sleepts="$(date +"TS %s.%N %F %T")"loadavg="$(uptime)"echo "$ts $loadavg" >> $PREFIX-${file}-statusmysql -uroot -p111111 -h127.0.0.1 -e 'SHOW GLOBAL STATUS' >> $PREFIX-${file}-status &echo "$ts $loadavg" >> $PREFIX-${file}-innodbstatusmysql -uroot -p111111 -h127.0.0.1 -e 'SHOW ENGINE INNODB STATUS\G' >> $PREFIX-${file}-innodbstatus &echo "$ts $loadavg" >> $PREFIX-${file}-processlistmysql -uroot -p111111 -h127.0.0.1 -e 'SHOW FULL PROCESSLIST\G' >> $PREFIX-${file}-processlist &echo $tsdoneecho Exiting because $RUNFILE does not exist.
执行: sh mysqlbenchmark.sh
下面是一个分析MySQL数据的shell脚本 analyze.sh
#!/bin/shawk 'BEGIN {printf "#ts date time load QPS";fmt = " %.2f ";}/^TS/ { # The timestamp lines begin with TS.ts = substr($2, 1, index($2, ".") -1);load = NF - 2;diff = ts - prev_ts;prev_ts = ts;printf "\n%s %s %s %s", ts, $3, $4, substr($load, 1, length($load)-1);}/Queries/ {printf fmt, ($2-Queries)/diff;Queries=$2}' "$@"
执行: sh analyze.sh 5-sec-status-2020-10-28_10-status > status-per-5-seconds
安装gnuplot绘图工具,针对获取性能数据通过图片来呈现,便于发现系统存在的的若干问题。
先执行gnuplot进行画图环境
set encoding utf8set xlabel "time"set ylabel "value"set term pdfcairo lw 2 font "simsun,8"set output "qps2.pdf"plot "status-per-5-seconds" using 5 w lines title "fanqps"set title "fanqps"set output
在原目录生成了qps2.pdf文件,关于gnuplot用法请自行查询官网gnuplot。
2.4 常用MySQL性能测试工具
2.4.1 sysbench的使用
sysbench是一款比较流行的性能测试工具,支持lua脚本。直接yum install sysbench,如果遇到冲突问题请先安装MySQL-shared和MySQL-shared-compat等其他组件。
sysbench用法
sysbench —help
- 1.CPU性能测试
sysbench cpu —cpu-max-prime=20000 run - 2.I/O基准测试
sysbench fileio —file-total-size=10G prepare
sysbench fileio —file-total-size=10G —file-test-mode=rndrw —time=300 —request=0 run
sysbench fileio —file-total-size=10G cleanup - 3.OLTP测试
sysbench /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua —oltp-table-size=1000000 —oltp-tables-count=10 —mysql-db=test —mysql-user=root —mysql-password=111111 prepare
sysbench /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua —oltp-table-size=1000000 —oltp-tables-count=10 —mysql-db=test —mysql-user=root —mysql-password=111111 —time=60 —oltp-read-only=on —requests=0 —threads=8 run
sysbench /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua —oltp-table-size=1000000 —oltp-tables-count=10 —mysql-db=test —mysql-user=root —mysql-password=111111 cleanup
2.4.2 mysqlslap
mysqlslap的用法
mysqlslap —help
指定查询语句用于测试数据库性能
编辑select_query.sql,定义一个脚本文件
select from sbtest1;
select from sbtest2;
mysqlslap —user=root —password=111111 —concurrency=1 —number-of-queries=10 —create-schema=test —query=”select_query.sql” –delimiter=”;”
2.4.3 linux常用的性能监控工具
除了传统的top工具外,pidstat用于哪些程序占用了IO资源
pidstat -d 3

