langjitianyaluotongxue

导航

08 生产经验:在数据库的压测过程中,如何360度无死角观察机器性能?

1.除了QPS和TPS外,我们还应该观察机器的性能

如果使用10个线程去压测数据库,此时性能还很高,其实可以在sysbench继续增加线程的数量,比如使用50个线程,100个线程直到QPS和TPS上不去了,当然我们在提高线程数量的时候不要盲目的压测

2.为什么在不停的增加线程数量的时候,要密切关注机器的性能?

比如你现在有200个线程压测数据库,性能还很高,cpu负载,磁盘,内存,网络占用,都还没拉满,当升级到500个线程的时候cpu和网络都拉满了,这时就不能继续增加线程压测了

3.压测时如何观察机器的CPU负载情况?

最常用的检测linux机器性能的命令是top命令

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就是说当前机器有1个用户在使用。
最重要的是load average: 0.15, 0.05, 0.01这行信息,他说的是CPU在1分钟、5分钟、15分钟内的负载情况。

这里要给大家着重解释一下这个CPU负载是什么意思,假设我们是一个4核的CPU,此时如果你的CPU负载是0.15,这这就说明,4核CPU中连一个核都没用满,4核CPU基本都很空闲,没啥人在用。

如果你的CPU负载是1,那说明4核CPU中有一个核已经被使用的比较繁忙了,另外3个核还是比较空闲一些。要是CPU负载是
1.5,说明有一个核被使用繁忙,另外一个核也在使用,但是没那么繁忙,还有2个核可能还是空闲的。
如果你的CPU负载是4,那说明4核CPU都被跑满了,如果你的CPU负载是6,那说明4核CPU被繁忙的使用还不够处理当前的
任务,很多进程可能一直在等待CPU去执行自己的任务。

4.压测时如何观察机器的内存负载情况?

在你执行top命令之后,中间我们跳过几行内容,可以看到如下一行内容:
Mem: 33554432k total, 20971520k used, 12268339 free, 307200k buffers
这里说的就是当前机器的内存使用情况,这个其实很简单,明显可以看出来就是总内存大概有32GB,已经使用了20GB左右的
内存,还有10多G的内存是空闲的,然后有大概300MB左右的内存用作OS内核的缓冲区了。
对于内存而言,同样是要在压测的过程中紧密的观察,一般来说,如果内存的使用率在80%以内,基本都还能接受,在正常范
围内,但是如果你的机器的内存使用率到了70%~80%了,就说明有点危险了,此时就不要继续增加压测的线程数量和QPS
了,差不多就可以了。

5.压测时如何观察机器的磁盘IO情况?

使用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分别是多少,也就是说随机磁盘读取每秒钟多少次,随机磁盘写入每秒钟执行多少次,大
概就是这个意思,一般来说,随机磁盘读写每秒在两三百次都是可以承受的。

6.

压测时观察网卡的流量情况
接着我们可以使用dstat -n命令,可以看到如下的信息:
-net/total-
recv send
16k 17k
这个说的就是每秒钟网卡接收到流量有多少kb,每秒钟通过网卡发送出去的流量有多少kb,通常来说,如果你的机器使用的
是千兆网卡,那么每秒钟网卡的总流量也就在100MB左右,甚至更低一些。
所以我们在压测的时候也得观察好网卡的流量情况,如果网卡传输流量已经到了极限值了,那么此时你再怎么提高sysbench
线程数量,数据库的QPS也上不去了,因为这台机器每秒钟无法通过网卡传输更多的数据了。

posted on 2022-09-16 10:21  浪迹天涯骆同学  阅读(26)  评论(0编辑  收藏  举报