12
09

一、增加线程数量时,为何要关注机器性能

在压测的过程中,必须是不停的增加sysbench的线程数量,持续的让数据库承载更高的QPS,同时密切关注机器的CPU、内存、磁盘和网络的负载情况,在硬件负载情况比较正常的范围内,哪怕负载相对较高一些,也还是可以继续增加线程数量和提高数据库的QPS的。如果一直不停的在压测过程中增加sysbench的线程数量,数据库此时勉强抗到每秒5000的QPS,机器的cpu已经满负荷运行,内存使用率特别高,内存快不够用了,网络带宽几乎被打满,磁盘IO的等待时间特别长,这样压测的出来QPS是没有代表性的。

二、压测时如何观察机器的CPU负载情况

常用的监测linux机器性能的命令就是top命令

[root@localhost ~]# top
top - 11:34:21 up 5 days, 22:44,  2 users,  load average: 0.00, 0.04, 0.48

最能直观看到机器的cpu负载情况:

  • 11:34:21 :指的是当前时间
  • up 5 days : 指的是机器运行多长时间
  • 2 users : 指的是当前机器2个用户在使用
  • load average: 0.00, 0.04, 0.48 :指的是1分钟,5分钟,15分钟内的负载情况

上面的load average实际上就1分钟,5分钟,15分钟内平均负载数据,上面都0.04之类,说明cpu要根本没有怎么使用。

如果在压测过程中,发现4核CPU的load average已经基本达到3.5,4了,说明几个cpu基本都跑满了,在满负荷运转,继续提高线程的数量和增加数据库的QPS,否则CPU负载太高也不合理。

三、压测时如何观察机器的内存负载情况

执行top命令,可以看到如下内容

Mem :  4912604 total,   125708 free,   698896 used,  4088000 buff/cache

说明当前机器的内存使用情况,一般来说,如果内存的使用率在80%以内,基本是可以接受的

四、压测时如何观察机器的磁盘IO负载情况

使用命令dstat -d :

[root@localhost ~]# dstat -d
-dsk/total-
 read  writ
4183B  106k
  32k   36M
 544k   25M
   0    37M

存储IO吞吐量是每秒钟读取4183B的数据,每秒写入106k的数据,普通的机械硬盘都可以做到每秒钟上百MB的读写数据量。

使用命令:dstat -r :

[root@localhost ~]# dstat -r
--io/total-
 read  writ
0.08  3.98 
   0  1445 
   0  1165 
8.00  1568 

这个就是读IOPS和写IOPS分别是多少,也就是随机磁盘读取每秒钟多少次,随机磁盘写入每秒执行多少次,一般来说,随机磁盘读写每秒在两三百次是可以承受的。

综上,如果磁盘IO吞吐量已经太高了,都达到极限的每秒上百MB了,或者随机磁盘读写每秒都到极限两三百次了,继续增加线程数量,否则磁盘IO负载太高了

五、压测时如何观察机器的网卡流量情况

使用命令:dstat -n

[root@localhost ~]# dstat -n
-net/total-
 recv  send
   0     0 
 512B  420B
 272B  372B
 572B  372B
 512B  372B

这个就是每秒钟网卡接收到流量有多少KB,每秒钟通过网卡发送出去的流量有多少KB.所以我们在压测的时候也得观察好网卡的流量情况,如果网卡传输流量已经到了极限值了,那么此时你再怎么提高sysbench线程数量,数据库的QPS也上不去了,因为这台机器每秒钟无法通过网卡传输更多的数据了.


标题:Mysql系列-压测mysql数据库过程同时观察机器性能
作者:chenjuntao
地址:http://taotaojava.com/articles/2020/12/09/1607513586077.html

标签:   浏览数: 0