10 mysql性能指标和压测工具

简介

mysql性能衡量标准

mysql吞吐量

一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。单个reqeust 对CPU消耗越高,外部系统接口、IO影响速度越慢,系统吞吐能力越低,反之越高。

系统吞吐量几个重要参数:QPS(TPS)、并发数、响应时间

QPS(每秒查询数)
QPS即每秒查询率,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。因特网上,经常用每秒查询率来衡量域名系统服务器的机器的性能,即为QPS。

MySQL 有一个名为 Questions 的内部计数器(根据 MySQL 用语,这是一个服务器状态变量),客户端每发送一个查询语句,其值就会加一。
获取方式:show status like "Questions";

10 mysql性能指标和压测工具

mysqladmin -uroot -p123 -h127.0.0.1 -i 1 -r extended | grep -i  questions

10 mysql性能指标和压测工具

开启一个ssh渠道进行查询实验
select * from mysql.user;

10 mysql性能指标和压测工具

TPS(每秒处理事务数量)
每秒钟系统能够处理的交易或事务的数量。它是衡量系统处理能力的重要指标。TPS是LoadRunner中重要的性能参数指标。

TPS=(com_commit+com_rollback)/seconds
(提交+回滚处理次数)/s

mysqladmin -uroot -p123 -h127.0.0.1 -i 1 -r extended | grep -i Com_commit

10 mysql性能指标和压测工具

mysqladmin -uroot -p123 -h127.0.0.1 -i 1 -r extended | grep -iw com_rollback

10 mysql性能指标和压测工具

响应时间

例子:如果一个订单业务需要5秒响应,50并发时,TPM为2000,可能有%95的业务可以达到要求,100并发时,TPM为3500,可能此时只有55%的业务可以达到要求

并发性:

须知:如果同时500人在线,如果不是1秒内请求刚好是500,并发就不是500,如果此时web有100个并发请求,并不是所有的web请求都会访问数据库,所以mysql的并发请求并不会到达100

查看最大连接数
show variables like "max_connections";

10 mysql性能指标和压测工具

查看运行的线程数
show status like "Thread%";

10 mysql性能指标和压测工具

Threads_running 1 表示运行的线程数为1

其他性能指标

磁盘IOPS:每秒IO请求数
磁盘吞吐量:每次IO操作产生的流量
查看磁盘IO
yum -y install sysstat.x86_64

10 mysql性能指标和压测工具

压测工具

mysqlslap 压测工具

确定硬件资源:
确定几核cpu:lscpu

10 mysql性能指标和压测工具

开启查询QPS
mysqladmin -uroot -p123 -h127.0.0.1 -i 1 -r extended | grep -i questions

测试

mysqlslap --no-defaults -uroot -p123 -h127.0.0.1 \
--auto-generate-sql \
--auto-generate-sql-add-autoincrement \
--auto-generate-sql-load-type=mixd \
--auto-generate-sql-execute-number=5000 \
--concurrency=1 \
--create-schema=abc \
--engine=innodb
--auto-generate-sql, -a 自动生成测试表和数据,表示用mysqlslap工具自己生成的SQL脚本来测试并发压力。
--auto-generate-sql-add-auto-increment 代表对生成的表自动添加auto_increment列,从5.1.18版本开始支持
--create-schema 代表自定义的测试库名称,测试的schema,MySQL中schema也就是database。
--auto-generate-sql-load-type=type 测试语句的类型。代表要测试的环境是读操作还是写操作还是两者混合的。取值包括:read,key,write,update和mixed(默认)。
--concurrency=N, -c N 表示并发量,也就是模拟多少个客户端同时执行select。可指定多个值,以逗号或者--delimiter参数指定的值做为分隔符。例如:--concurrency=100,200,500。

查看

10 mysql性能指标和压测工具

查看CPU状态
vmstat 1

10 mysql性能指标和压测工具

命令输出字段说明:

procs

  • r 可运行进程的数量(正在运行或等待运行)
  • b 正在等待 I/O 完成,被阻塞的进程数

memory

  • swpd 使用的交换空间大小
  • free 空闲的内存大小
  • buff 写缓存的大小
  • cache 读缓存的大小
  • inact 使用 -a 选项才能看到; 非活动内存大小
  • active 使用 -a 选项才能看到; 活动内存大小

swap

  • si 每秒从磁盘换入的内存大小(内存-->磁盘)
  • so 每秒从磁盘换出的内存大小(磁盘-->内存)

io

  • bi 每秒从块设备接收的数据,单位 block
  • bo 每秒从块设备发送的数据,单位 block

system

  • in 每秒的中断(interrupts)数,包括CPU时钟
  • cs 每秒上下文切换的次数

cpu

单位是:

CPU 总时间的百分比

  • us 运行用户空间代码所花费的时间
  • sy 运行内核空间代码所花费的时间
  • id 空闲时间
  • wa 等待 I/O 所花费的时间
  • st 被虚拟机管理程序(hypervisor) 偷走/占用的时间

从上图可知:

idel空闲使用率最低为58,压力最大时cpu占用率为42%

再次修改并发量为2执行测试

10 mysql性能指标和压测工具
10 mysql性能指标和压测工具

并发量修改为4

10 mysql性能指标和压测工具

修改为16

10 mysql性能指标和压测工具

改为32,处理总量时间越来越长

10 mysql性能指标和压测工具

继续修改64、128... 当到达256时,出现报错

10 mysql性能指标和压测工具

tpcc压测工具

安装:
官方:https://code.launchpad.net/~percona-dev/perconatools/tpcc-mysql
官方github:https://github.com/Percona-Lab/tpcc-mysql

安装包:tpcc-mysql-master.zip

load.sh中可以调用其他脚本
多进程脚本:在一个脚本中多次调用另外一个脚本多次

进入到tpcc目录中
cd tpcc-mysql-master/src
make
cd ..

创建一个叫tpcc_test的库,在库下source create_table.sql
create database tpcc_test;
use tpcc_test;
source create_table.sql;

在执行脚本时报错
find / -name libmysqlclient.so.20

10 mysql性能指标和压测工具

创建链接
ln -s /usr/src/mysql-5.7.22-linux-glibc2.12-x86_64/lib/libmysqlclient.so.20 /usr/lib/libmysqlclient.so.20
echo "/usr/local/lib" >>/etc/ld.so.conf

测试

./tpcc_start 命令格式说明:

Usage: tpcc_start 
-h server_host: 服务器名
-P port : 端口号,默认为3306
-d database_name: 数据库名
-u mysql_user : 用户名
-p mysql_password : 密码
-w warehouses: 仓库的数量
-c connections : 指定并发连接数,默认为1
-r warmup_time : 热身时间,单位:s,默认为10s ,热身是为了将数据加载到内存。
-l running_time: 测试时间,单位:s,默认为20s
-i report_interval: 指定生成报告间隔时长
-f report_file: 测试结果输出文件


chmod +x load.sh

./load.sh tpcc_test 1000

10 mysql性能指标和压测工具

执行单线程
./tpcc_load -h 127.0.0.1 -d tpcc_test -u root -p "123" -w 2

10 mysql性能指标和压测工具

watch du -sh /usr/local/mysql/data/tpcc_test

10 mysql性能指标和压测工具

持续写入数据

根据当前目录*.out文件查看

10 mysql性能指标和压测工具

发布者:LJH,转发请注明出处:https://www.ljh.cool/6667.html

(0)
上一篇 2020年6月3日 下午6:04
下一篇 2020年6月25日 上午12:18

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注