MYSQL专题(三):压测、一些性能指标
MYSQL专题(三):压测、⼀些性能指标
⾼并发条件下,数据库应该⽤什么样的机器
对于数据库⽽⾔,通常推荐使⽤⾄少8核16G以上的机器,最好选⽤8核32G的机器,因为数据库需要执⾏⼤量的磁盘IO操作,他的每个请求都⽐较耗时⼀些,所以机器的配置需要⾼⼀些。
⼀般8核16G的机器部署的MYSQL数据库,每秒抗⼀两千个并发请求是没有问题的,但是如果你的并发量再⾼⼀些,假设每秒有⼏千并发请求,那么可能数据库就有点危险了,因为数据库的CPU,磁盘,IO,内存的负载都会⽐较⾼,弄不好数据库压⼒过⼤会宕机。
对于8核32G,每秒两三千,三四千⼀般也可以抗得住。
对于数据库⽽⾔,如果可以的话,最好采⽤SSD固态硬盘⽽不是普通的机械硬盘,因为数据库最⼤的复杂就在于⼤量的磁盘IO,他需要⼤量的读写磁盘⽂件,如果能使⽤SSD固态硬盘,数据库每秒能抗住的并发请求量会⾼⼀些。
QPS &TPS
IO相关的压测性能指标
IOPS:这个指的是机器的随机IO并发处理的能⼒,⽐如机器可以达到200 IOPS,意思就是说每秒可以执⾏200个随机IO读写请求你在内存中更新的脏数据库,最后都会由后台IO线程在不确定的时间,刷回到磁盘⾥去,这就是随机IO的过程。
吞吐量:机器的磁盘存储每秒可以读写多少字节的数据量。
我们在执⾏各种sql语句的时候,提交事务的时候,其实都是⼤量的会写redo log之类的⽇志的,这些⽇志都会直接写磁盘⽂件。(顺序写⼊)
latency:往磁盘⾥写⼊⼀条数据的延迟
因为我们执⾏sql语句核提交事务的时候,都要顺序写redo log磁盘⽂件,所以此时你写⼀条⽇志到磁盘⽂件中去,延迟多久对性能是有影响的。
CPU负载,⽹络负载,内存负载
理论上,通过增加线程数,内存读写,抗⼏千并发,甚⾄上万并发都是可以的。 但是,线程数越来越多之后,切换上下⽂很费CPU,QPS 会下降,CPU负载也会变⾼,当请求源源不断进来的时候会导致挤压,进⼀步拖垮系统。
压测
⽤sysbench⼯具
基于sysbench构造测试表和测试数据
综合读写测试 oltp_read_write
sysbench --db-driver=mysql --time=15 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=Jie906119240! --mysql-db=test_db --tables=20 --table_size=1000000 oltp_read_write --db-ps-mode=disable run
压测过程中可以不断地增加线程的数量,直到发现数据库的QPS和TPS上不去了。
硬盘性能指标如果你不停的增加线程的数量,然后发现CPU已经满负荷了,内存使⽤率特别⾼,内存不够⽤,那么这时候测出来的QPS并没有什么⽤。因为⽣产环境不可能让数据库⼀直处于快挂了的阶段。
压测时如何观察机器的指标

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。