1. 什么是压力测试
压力测试是针对系统的一种性能测试,但是测试数据与业务逻辑无关,更加简单直接的测试读写性能
2. 压力测试的指标
- QPS:每秒钟处理完请求的次数
- TPS:每秒钟处理完的事务次数
- 响应时间:一次请求所需要的平均处理时间
- 并发量:系统能同时处理的请求数
3. 压力测试工具
- Mysqlslap
- Sysbench
- Jmeter 长时间高并发的测试应该选择Sysbench
3. 安装Sysbench
下载阿里云或163的yum源,放在/etc/yum.repos.d目录中, 然后再执行如下两条命令
yum clean all
yum makecache
-
- 下载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-host | ip地址 |
--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 测试报告输出位置