1. 数据库压测工具
sysbench进行数据库压测。
1.1. 安装
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
sudo yum -y install sysbench
sysbench --version
1.2. 压力测试准备
sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=test_user --mysql-password=test_user --mysql-db=test_db --tables=20 --table_size=1000000 oltp_read_write --db-ps-mode=disable prepare
- --db-driver=mysql:驱动程序选择
- --time=300:连续访问300s
- --threads=10:10个线程模拟
- --report-interval=1:每隔1s输出压测情况
- --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=test_user --mysql-password=test_user:连接信息
- --mysql-db=test_db --tables=20 --table_size=1000000:在test_db库,构造20个测试表,每个表1000000万条测试数据
- oltp_read_write:执行oltp的读写测试
- --db-ps-mode=disable:禁止ps模式
prepare,意思是参照这个命令的设置去构造出我们需要的数据,即创建20个表,每个表100万条数据。
1.3. 全面压测
- 综合读写TPS,oltp_read_write
sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysqlport=3306 --mysql-user=test_user --mysql-password=test_user --mysql-db=test_db --tables=20 --
table_size=1000000 oltp_read_write --db-ps-mode=disable run
- 只读性能是oltp_read_only
- 删除性能是oltp_delete
- 更新索引字段的性能是oltp_update_index
- 更新非索引字段的性能是oltp_update_non_index
- 插入性能是oltp_insert
- 写入性能是oltp_write
1.4. 数据清理
sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysqlport=3306 --mysql-user=test_user --mysql-password=test_user --mysql-db=test_db --tables=20 --
table_size=1000000 oltp_read_write --db-ps-mode=disable cleanup
2. 压测结果分析
[ 22s ] thds: 10 tps: 380.99 qps: 7312.66 (r/w/o: 5132.99/1155.86/1321.35) lat (ms, 95%): 21.33 err/s: 0.00 reconn/s:0.00
压测报告每秒的输出:
- thds: 10:10个线程在压测
- tps: 380.99:每秒执行380.99个事务
- qps: 7312.66:每秒执行7312.66个请求
- (r/w/o: 5132.99/1155.86/1321.35):read、write、other
- lat (ms, 95%): 21.33:95%请求低于21.33ms
- err/s: 0.00 reconn/s:0.00:0次请求失败,0次网络重连
压测报告说明:
3. 其他机器指标关注
- cpu跟内存情况,使用top命令查看
- 磁盘IO使用
-dsk/total -
read writ
103k 211k
0 11k
IO吞吐量是103kb/s,写入211kb/s 普通机器硬盘每秒上百MB的读写量
--io/total -
read writ
0.25 31.9
0 253
0 39.0
读IOPS和写IOPS,随机磁盘读取每秒多少次,随机磁盘写入每秒多少次,每秒两三百次可以接受
- 网卡的流量
dstat -n
-net/total -
recv send
16k 17k
千兆网卡,每秒钟的总流量在100MB左右
4. 监控
生产环境数据库不能裸奔,得上监控,Prometheus+Grafana推荐。