MySQL裸机性能测试(2021)

一 为什么要对新申请的MySQL服务器压测

新申请的机器我们是不知道性能的,系统上线之前,我们需要知道数据库的性能,从而在系统部署之后的压测中,判断系统的性能是高于还是低于数据库性能,从而确定瓶颈或者性能问题是在系统还是在数据库。比如数据库的QPS是2000,可能应用系统的QPS才500.

二 数据库压测性能指标有哪些

2.1 IOPS: 随机IO并发处理能力,比如200IOPS

2.2 吞吐量: 磁盘每一秒中可以读写多少字节数据量, 比如redo log受吞吐量影响

2.3 延迟:往磁盘写一条数据的延迟

2.4 CPU负载

假设你数据库QPS3000,可能其他性能指标正常,但是CPU负载特别高,100% 以上,那么也说明数据库不能继续往下压测更高的qps

2.5 网络负载

在机器带宽一定的条件下,压测到一定的QPS和TPS的时候,每一秒钟的网卡会输出多少数据,会输入多少数据,有可能你的网络带宽最多每一秒传输100MB数据,那么你QPS到1000的时候,网卡就打满了。千兆网卡,每一秒最多传输128M,实际可能不到128M

三 数据库压测工具-sysbench

3.1 安装sysbench

curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash

sudo yum -y install sysbench

sysbench --version

3.2 创建测试库、测试账号用户名和密码

CREATE DATABASE IF NOT EXISTS testdb;

# 允许本机以外其他主机连接

CREATE USER 'test_user'@'localhost' IDENTIFIED BY 'test_user';

# 允许本地主机连接

CREATE USER 'test_user'@'%' IDENTIFIED BY 'test_user';

# 给test_user用户授予testdb数据库所有权限

GRANT ALL ON testdb.* TO ' @'localhost' IDENTIFIED BY 'test_user';

3.3 基于sysbench构造测试表和测试数据

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=localhost --mysql-port=3306 --mysql-user=test_user --mysql-password=test_user --mysql-db=testdb --mysql-socket=/usr/local/mysql/tmp/mysql.sock --tables=20 --table_size=1000000 oltp_read_write --db-ps-mode=disable prepare

--db-driver=mysql 数据库驱动,如果是mysql,则是mysql驱动

--time=300 连续访问300秒

--threads=10 用10个线程模拟并发访问

--report-interval=1 每隔1秒输出一下压测情况

--mysql-host=127.0.0.1 连接哪一个主机

--mysql-port=3306 端口

--mysql-user=test_user 账号

--mysql-password=test_user 密码

--mysql-db=testdb 指定数据库

--tables=20 创建多少表

--table_size=1000000 每一个表创建多少记录

oltp_read_write 执行oltp数据库的读写测试

prepare 表示开始构造表和数据,为压测做准备

3.4 sysbench开始测试,并分析各个指标

3.4.1 top命令查看内存和CPU状态以及CPU负载

top - 18:38:57 up  3:25,  6 users,  load average: 4.78 2.93 1.64

load average:表示CPU在1分钟 5分钟 15分钟的负载情况

Mem: 16331952k total, 6372140k used, 9959812k free, 141864k buffer:

表示内存负载情况: 当前内存15g内存,使用了6G,还剩10G左右,然后138M左右是内核缓冲区

%CPU: 表示CPU当前的使用率 在70-80%下是可以接受的

%MEM: 表示当前进程占用内存百分比

3.4.2 每一秒输出的压测报告

[ 251s ] thds: 10 tps: 336.11 qps: 6723.16 (r/w/o: 4705.52/1345.43/672.22) lat (ms,95%): 71.83 err/s: 0.00 reconn/s: 0.00

thds:表示线程数

qps: 每一秒查询SQL的数量

tps: 每一秒处理事务的数量

lat: 延迟时间

err/s: 每一秒错误

3.4.3 压测完毕后的报告

SQL统计:

3.4.4 磁盘I/O吞吐量

比如上图所示:磁盘每一秒读取6M, 24M 16M, 每一秒写入2M、20M、22M,普通机械硬盘可以达到每一秒几百兆

3.4.5 查看随机IO读写指标

比如上图,读IOPS是1182,即随机磁盘读取每一秒钟多少次;写IOPS是946,随机磁盘写每一秒钟多少次,随机磁盘读写每一秒在2-300是可以承受的,但是不能更低

3.4.6 压测试观测网卡流量情况

这个说的就是每秒钟网卡接收到流量有多少kb,每秒钟通过网卡发送出去的流量有多少kb,通常来说,如果你的机器使用的是千兆网卡,那么每秒钟网卡的总流量也就在100MB左右,甚至更低一些。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莫言静好、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值