相关压测性能指标

IOPS

随机io的并发能力,200 iops:每秒可以执行200个随机IO读写请求
将内存中改的数据刷入磁盘中,就要用到随机IO,如果指标过低,导致提交事务效率不高

吞吐量

机器的磁盘存储每秒可以读写多少字节的数据量
每秒可以把多少redo log之类的日志写入到磁盘中去。一般日志对磁盘文件是顺序写入,一行接着一行写,不会随机读写,一般普通磁盘顺序写入的吞吐量每秒在200MB左右

latency

往磁盘里写入一条数据的延迟

cpu负载

假设数据库压测到了每秒处理3000请求,其他性能都正常,到cpu负载很高,说明不能压更高qps了,cpu吃不消

网络负载

每秒种网卡输入多少MB数据,输出多少MB,有可能网络带宽最多每秒传输100MB数据,qps到1000的时候,网卡已经打满。

内存负载

内存耗费过高,影响压测

具体工具及使用

专栏:https://apppukyptrl1086.pc.xiaoe-tech.com/detail/i_5e383c5357307_MjhluwMb/1?from=p_5e0c2a35dbbc9_MNDGDYba&type=6

机器性能观察

linux top

执行top会得到一套信息
image.png
top - 15:52:00 up 42:35, 1 user, load average: 0.15, 0.05, 0.01
15:52:00 当前时间
up 42:35 机器已经运行了多长时间
1 user 当前机器有多少个用户在用
load average: 0.15, 0.05, 0.01这行信息,他说的是CPU在1分钟、5分钟、15分钟内的负载情况;如果你的CPU负载是1,那说明4核CPU中有一个核已经被使用的比较繁忙了,另外3个核还是比较空闲一些。要是CPU负载是1.5,说明有一个核被使用繁忙,另外一个核也在使用,但是没那么繁忙,还有2个核可能还是空闲的。如果你的CPU负载是4,那说明4核CPU都被跑满了,如果你的CPU负载是6,那说明4核CPU被繁忙的使用还不够处理当前的任务,很多进程可能一直在等待CPU去执行自己的任务。load average是平均值
Mem: 33554432k total, 20971520k used, 12268339 free, 307200k buffers
内存使用情况,有多少,用了多少

磁盘io情况dstat

dstat -d

-dsk/total -
read writ
103k 211k
0 11k
存储的IO吞吐量是每秒钟读取103kb的数据,每秒写入211kb的数据,像这个存储IO吞吐量基本上都不算多的,因为普通的机械硬盘都可以做到每秒钟上百MB的读写数据量。

dstat -r

—io/total-
read writ
0.25 31.9
0 253
0 39.0

读IOPS和写IOPS分别是多少,也就是说随机磁盘读取每秒钟多少次,随机磁盘写入每秒钟执行多少次,大概就是这个意思,一般来说,随机磁盘读写每秒在两三百次都是可以承受的。如果磁盘IO吞吐量已经太高了,都达到极限的每秒上百MB了,或者随机磁盘读写每秒都到极限的两三百次了,此时就不要继续增加线程数量了,否则磁盘IO负载就太高了。

dstat -n

-net/total-
recv send
16k 17k

每秒钟网卡接收到流量有多少kb,每秒钟通过网卡发送出去的流量有多少kb,通常来说,如果你的机器使用的是千兆网卡,那么每秒钟网卡的总流量也就在100MB左右,甚至更低一些。如果网卡传输流量已经到了极限值了,那么此时你再怎么提高sysbench线程数量,数据库的QPS也上不去了,因为这台机器每秒钟无法通过网卡传输更多的数据了。

监控软件

Prometheus和Grafana
我买的专栏:第九第十篇