1、机器配置与相关概念

  • 4核8G : 每秒500个请求
  • 8核16G : 1000~2000
  • 16核32G :3000~4000

  当然你也要考虑你请求耗时

2、IO相关的性能指标

  • IOPS:机器随机IO并发处理的能力,内存中更新的数据会由线程在不确定的时间刷入磁盘中,这就是随机IO的过程。如果你的IOPS过低,会导致内存中刷入磁盘的效率不够高
  • 吞吐量:机器的磁盘每秒可以读写多少节点的数据量,提交事务的时候,会把大量的redo log日志刷入磁盘,所以吞吐量就决定了每秒可以写入多少redo log,redo log是顺序写入的。一般磁盘的吞吐量可以达到每秒200M
  • latency :往磁盘写入一条数据的延迟

3、压测的时候要关注的其他性能指标

  • CPU负载:假设你压测的时候每秒可以处理3000个请求,可能其他的性能指标都正常,但是CPU负载过高,那么说明数据库不能压测更高的QPS了,否则CPU会吃不消
  • 网络负载:观察机器带宽,在压测一定的QPS和TPS的时候,每秒钟机器的网卡输入多少MB数据,输出多少数据,网卡打满的话说明你的压测不能继续了
  • 内存负载:如果机器内存消耗过高,那么你的压测也停止了

4、压测工具sysbench

  • linux安装sysbench
  • 测试命令:
  • 准备 :sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=slp --mysql-password=Lll001972 --mysql-db=tpl_system --tables=20 --table_size=1000000 oltp_read_write --db-ps-mode=disable prepare
  • 跑起来:sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=slp --mysql-password=Lll001972 --mysql-db=tpl_system --tables=20 --table_size=1000000 oltp_read_write --db-ps-mode=disable run
  • 如果要对不同的操作进行压测,可以更改oltp_read_write参数,可改为:
  • oltp_read_only : 读
  • oltp_delete : 删
  • oltp_update_index :更新索引字段的性能
  • oltp_update_non_index : 更新非索引字段
  • oltp_insert :插
  • oltp_write :写
  • 压测完成后可执行clean up指令:sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=slp --mysql-password=Lll001972 --mysql-db=tpl_system --tables=20 --table_size=1000000 oltp_read_write --db-ps-mode=disable cleanup
  • 压测完成后,会有压测报告出现,我的服务器宕机了,法克,commback
[ 81s ] thds: 10 tps: 8.99 qps: 204.88 (r/w/o: 145.92/39.98/18.99) lat (ms,95%): 995.51 err/s: 0.00 reconn/s: 0.00

参数表示10线程,每秒tps:9,qps:204(读/写/其他),95%的请求在995ms之内,每秒由0个请求是失败的,发生0次网络重连

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

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

top - 15:52:00 up 42:35, 1 user, load average: 0.15, 0.05, 0.01

先来解释一下这行信息,这行信息是最直观可以看到机器的cpu负载情况的,首先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基本都很空闲,没啥人在用。依次类推

6、内存负载

MiB Mem :   1830.0 total,     67.8 free,   1460.3 used,    302.0 buff/cache

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

  dstat -d命令、dstat -r命令

8、压测时观察网卡的流量情况

  dstat -n命令

9、数据库可视化监控和报表

  Prometheus + Grafana