MySQL实战之压测
前言
- 作为一个Java发展攻城狮,不仅要有扎实的Java基础,了解各种框架的原理,优化一些知识。众所周知,卷心菜卷起来是因为蔬菜,即使卷起来是蔬菜
- 不用问大家也知道, 一般来说8C16G的MySQL服务器一般能抵抗1000-2000的并发,16C32G一般来说,它可以抵抗2000-3000,但也可以抵抗带宽和磁盘IO,内存,CPU,以及代码fen不fen有关
MySQL压测
-
MySQL版本: 5.7
-
压测工具sysbench
-
安装压测工具
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash sudo yum -y install sysbench sysbench --version
-
压测预备
sysbench --db-driver=mysql --time=300 --threads=100 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=root --mysql-db=test_db --tables=20 --table_size=1000000 oltp_read_write --db-ps-mode=disable prepare
-
介绍预备参数
- –db-driver=mysql # 压测数据库为MySQL
- –time=300 --threads=100 --report-interval=1 # 持续5分钟, 每秒输出100个线程结果
- -mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=root --mysql-db=test_db # ip端口、用户名、密码、数据库
- –tables=20 --table_size=1000000 # 20张表,每张表1000张w条记录
- oltp_read_write # 以在线事务读写模式
- –db-ps-mode=disable # 禁止ps模式
- prepare # 准备
-
开始
sysbench --db-driver=mysql --time=300 --threads=100 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql
-password =root --mysql -db =test_db --tables = 20 --table_size = 1000000 oltp_read_write --db -ps -mode =disable run -
有几个参数需要注意一下
- run # 最后的位置表示执行
- oltp_read_write # 读写能力
- oltp_read_only # 只读能力
- oltp_delete # 删除能力
- oltp_update_index # 更新索引字段能力
- oltp_update_non_index # 更新非索引字段的能力
- oltp_insert # 插入的能力
- cleanup # 最后的位置表示清楚数据
-
结果
-
结果解析
- 75s # 此次显示发生在75秒
- thds: 100 # 本次使用100个线程
- tps:765.41 # 每秒可以处理765.41事务
- qps:15343.09 # 总共的请求数,后边的是读,写,其它的数量
- lat (ms,95%) 253.35 # 95%的延迟在253.35毫秒
- err/s, reconn/s 0.00 # 没有报错或者从新连接的
-
汇总报告