上一章简述了 利用 sysbench 进行测压时,数据库能抗下多少 QPS, TPS等数据库服务器的指标。
但是本质上 如果你的机器性能特别好。可能你采用 10个 线程 ,20个线程等,是无法测试出数据库的最高负载能力。
那么,我们可以通过不断增加线程数量,同时观察机器的性能。让数据库去承载更高的QPS
四、关于生产环境下的MySQL(下)(sysbench 压测)
4-1 为什么我们在不停增加线程数的时候,要密切关注机器性能?有什么意义呢?
- 首先 不断增加线程数,可以测试出数据库能承载更高的QPS。
- 至于密切关注机器性能。
首先假设你的数据库当前测试下QPS是1500。此时你的 CPU、内存、IO、网络 负载都处理合理范围内且偏高(硬件还没到极致)
但是如果你不断增加线程,此时数据库可以抗下QPS 2500 ,但是此时CPU、内存、IO、网络 已经满负载了,此时机器都快挂了。你此时说 机器能抗下QPS 2500是没有实际意义的。(生产环境根本扛不住)。
所以在测试中,可以不断加线程 提高QPS,同时关注机器指标。当到达一个临界值时,就不能继续增加线程数了。
4-2 如何观察 CPU、内存、磁盘IO、网络负载的情况
- CPU: 可以利用 top命令进行观察。
top - 13:04:13 up 2:26, 1 user, load average: 0.33, 0.34, 0.36
- 13.04.13 是当前时间
- up 2:25 表示 运行了2.25个小时
- 1 user 表示 只有一个用户在使用
- load average 0.32 0.34 0.36 表示 CPU 最近 1 分钟 5分钟 15分钟内的平均负载数值
- 关于负载数值:负载=1,表示CPU中的一个核心已经跑满了。
- 内存负载情况 : 同样使用 top命令查看
KiB Mem : 10060320 total, 6279428 free, 2598168 used, 1182724 buff/cache
- 总大小为 10060320 KB, 空闲 6279428 KB, 缓冲区: 1182724KB
- 如果你内存到达 70~80 % 就差不多了
- 磁盘IO情况: 使用 dstat 命令 (如果没有安装 请自行安装)
- 磁盘IO吞吐量: 使用 dstat -d
- 上图表示磁盘每秒 读取数据量 和 写入数据量
- 磁盘的IOPS: 使用 命令 dstat -r
- 上图表示 随机磁盘读取每秒多少次,随机磁盘写入每秒多少次
- 候密切观察机器的磁盘IO情况,如果磁盘IO吞吐量已经太高了,都达到极限的每秒上百
MB了,或者随机磁盘读写每秒都到极限的两三百次了,此时就不要继续增加线程数量了,否则磁盘IO负载就太高了。
- 网络负载: dstat -n
- 表示每秒通过网卡发送多少kb,接收了多少kb