MySQL压力测试

1,563 阅读2分钟

1. 什么是压力测试

压力测试是针对系统的一种性能测试,但是测试数据与业务逻辑无关,更加简单直接的测试读写性能

2. 压力测试的指标

  • QPS:每秒钟处理完请求的次数
  • TPS:每秒钟处理完的事务次数
  • 响应时间:一次请求所需要的平均处理时间
  • 并发量:系统能同时处理的请求数

3. 压力测试工具

  • Mysqlslap
  • Sysbench
  • Jmeter 长时间高并发的测试应该选择Sysbench

3. 安装Sysbench

mirrors.163.com/.help/CentO…

下载阿里云或163的yum源,放在/etc/yum.repos.d目录中, 然后再执行如下两条命令

yum clean all
yum makecache
    1. 下载Sysbench安装脚本并进行安装
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash

yum install -y sysbench

⚠️注意:sysbench不能和MySQL8.0安装到同一个Linux系统上

3. Sysbench基本语法

sysbench script [options] [command]

[option]连接信息参数

参数名称功能意义
--mysql-hostip地址
--mysql-port端口号
--mysql-user用户名
--mysql-password密码

[option]执行参数

参数名称功能意义
--oltp-test-mode执行模式,包括simple、nontrx和complex,默认是complex
--oltp-tables-count测试的表数量
--oltp-table-size测试的表的大小
--threads客户端的并发连接数
--time测试执行的时间,单位是秒
--report-interval生成报告的时间间隔,单位是秒

[command]命令

命令名称功能意义
prepare准备测试数据
run执行测试
cleanup清除测试数据

准备测试数据

sysbench /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua --mysql-host=192.168.1.99 --mysql-port=3306 --mysql-user=root --mysql-password=123456abc --oltp-tables-count=10 --oltp-table-size=100000 prepare

--oltp-tables-count=10 表示生成10个用于测试的数据表

--oltp-table-size=100000 每个表里有10万条数据

执行测试

sysbench /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua --mysql-host=192.168.1.99 --mysql-port=3306 --mysql-user=root --mysql-password=123456abc --oltp-test-mode=complex --threads=10 --time=600 --report-interval=10 run >> /home/report.log

--time=600 执行时长600秒,10分钟

--report-interval=10 每隔10秒钟生成一次测试报告

/home/report.log 测试报告输出位置