安装命令
我创建了一个容器,安装命令来压测
docker run --rm -it centos:7 /bin/bash
# 进入容器后
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | bash
yum -y install sysbench
# 查看版本
sysbench --version
构造测试表和数据
sysbench --db-driver=mysql \
--time=10 \
--threads=10 \
--report-interval=1 \
--mysql-host=<ip> \
--mysql-port=<port> \
--mysql-user=<username> \
--mysql-password=<password> \
--mysql-db=cm_test \
--tables=10 \
--table_size=100000 \
oltp_read_write \
--db-ps-mode=disable \
prepare
参数 | 含义 |
---|---|
–db-driver=mysql | 这个很简单,就是说他基于mysql的驱动去连接mysql数据库,你要是oracle,或者sqlserver,那自然就是其他的数据库的驱动了 |
–time=10 这个就是说连续访问10秒 | |
–threads=10 | 这个就是说用10个线程模拟并发访问 |
–report-interval=1 | 这个就是说每隔1秒输出一下压测情况 |
–mysql-host=<ip> | 这是你要连接的sql服务连接 |
–db-driver=mysql | 这个很简单,就是说他基于mysql的驱动去连接mysql数据库,你要是oracle,或者sqlserver,那自然就是其他的数据库的驱动了 |
–mysql-port=<port> | 数据端口 |
–mysql-user=<username> | 数据库用户名 |
–mysql-password=<password> | 数据库密码 |
–mysql-db=cm_test | 哪个数据库进行压测,需要手动创建库 |
–tables=10 | 压测数据库创建多少张表 |
–table_size=1000000 | 压测数据库每张表插入多少数据 |
oltp_read_write | 执行oltp数据库的读写测试 |
–db-ps-mode=disable | 禁止ps模式(不知道干嘛的) |
prepare | 参照这个命令的设置去构造出来我们需要的数据库里的数据,他会自动创建20个测试表,每个表里创建100万条测试数据 |
开始压测
从10个线程开始压,压10秒,同时读写操作
sysbench --db-driver=mysql \
--time=10 \
--threads=10 \
--report-interval=1 \
--mysql-host=<ip> \
--mysql-port=<port> \
--mysql-user=<username> \
--mysql-password=<password> \
--mysql-db=cm_test \
--tables=10 \
--table_size=100000 \
oltp_read_write \
--db-ps-mode=disable \
run
压测结果
[ 1s ] thds: 10 tps: 131.73 qps: 2668.44 (r/w/o: 1868.11/526.90/273.43) lat (ms,95%): 99.33 err/s: 0.00 reconn/s: 0.00
参数 | 含义 |
---|---|
thds: 10 | 有10个线程在压测 |
tps: 131.73 | 每秒执行了131.73个事务 |
qps: 2668.44 | 每秒可以执行2668.44个请求 |
(r/w/o: 1868.11/526.90/273.43) | 在每秒2668.44个请求中,有1868.11个请求是读请求,526.90个请求是写请求,273.43个请求是其他的请求,就是对QPS进行了拆解l |
at (ms,95%): 99.33 err/s | 95%的请求的延迟都在 99.33毫秒以下 |
0.00 reconn/s: 0.00 | 每秒有0个请求是失败的,发生了0次网络重连 |
评论区