概述
我是用mac本地测试的,linux环境大致相同。数据库的性能压测,不单单一味追求qps/tps,还要看CPU和内存使用情况。
QPS/TPS压测工具sysbench
安装sysbench
使用brew
命令安装sysbench
brew install sysbench
查看sysbench
安装版本,确保安装OK
sysbench --version
预执行命令
sysbench --db-driver=mysql --time=10 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=test --tables=20 --table_size=1000000 oltp_read_write --db-ps-mode=disable prepare
执行压测命令
sysbench --db-driver=mysql --time=10 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=test --tables=20 --table_size=1000000 oltp_read_write --db-ps-mode=disable run
可在控制台上看到如下:
[ 1s ] thds: 10 tps: 378.06 qps: 7664.93 (r/w/o: 5379.62/1031.43/1253.88) lat (ms,95%): 44.98 err/s: 0.00 reconn/s: 0.00
[ 2s ] thds: 10 tps: 391.24 qps: 7804.75 (r/w/o: 5464.33/1063.65/1276.78) lat (ms,95%): 45.79 err/s: 0.00 reconn/s: 0.00
[ 3s ] thds: 10 tps: 410.97 qps: 8264.45 (r/w/o: 5788.61/1110.93/1364.91) lat (ms,95%): 46.63 err/s: 0.00 reconn/s: 0.00
[ 4s ] thds: 10 tps: 397.00 qps: 7939.07 (r/w/o: 5560.05/1089.01/1290.01) lat (ms,95%): 52.89 err/s: 0.00 reconn/s: 0.00
thds: 10 表示有10个线程在压测
tps: 378.06 表示每秒执行了378.06个事物
qps: 7664.93 表示每秒执行了7664.93个请求
r/w/o: 5379.62/1031.43/1253.88 表示在7664.93个请求当中,有5379.62个读请求,1031.43个写请求,其他请求1253.88个
lat (ms,95%): 44.98 表示95%的请求延时,都在44.98毫秒以下
err/s: 0.00 reconn/s: 0.00 表示每秒有0个失败请求,0个重连请求。
命令参数解释
–db-driver=mysql: 表示连接的哪个类型的数据库;
–time=300: 表示连续访问300s;
–threads=10: 用10个线程模拟并发访问;
–report-interval=1: 每隔1秒输出压测情况;
–mysql-db=test --tables=20 --table_size=1000000: 表示在test这个数据库里,生成20张表,每个测试表构造100万条测试数据,测试表名字类似于sbtest,sbtest2;
oltp_read_write: 执行oltp数据库的读写测试;
oltp_read_only: 测试数据库的只读性能;
oltp_delete: 测试数据库;
–db-ps-mode=disable: 禁止ps模式。
CPU和内存负载监测工具
在进行qps/tps压测时,执行top
命令,可以看到:
此时看到CPU使用率是在61%左右,这个是正常的,并且还可以增加线程进行压测。物理内存还剩余8118M。
一般来说,CPU和内存使用率,应该尽量控制在80%以内。
磁盘io监测
linux环境执行: dstat -d
,可以看到存储的IO吞吐量,如果每秒吞吐量达到上百MB,说明已经到达极限。
linux环境执行:dstat -r
,可以看到随机磁盘读写频率,如果每秒达到了两三百次,说明已经到达极限。
网卡流量监测
linux环境执行: dstat -n
,可以看到网卡每秒接收和发送出去的流量,如果机器使用的是千兆网卡,那么每秒钟网卡的总流量在100M左右,甚至更低。
总结
想对数据库进行性能压测,除了看qps/tps,还得看CPU使用情况,磁盘IO使用情况,内存使用情况,网络使用情况。
最后
以上就是体贴大叔为你收集整理的mysql数据库(1)之性能压测QPS/TPS压测工具sysbenchCPU和内存负载监测工具磁盘io监测网卡流量监测总结的全部内容,希望文章能够帮你解决mysql数据库(1)之性能压测QPS/TPS压测工具sysbenchCPU和内存负载监测工具磁盘io监测网卡流量监测总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复