zoukankan      html  css  js  c++  java
  • MySQL压测相关内容

    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

  • 相关阅读:
    PHP Document 注释标记及规范 && PHP命名规范
    JavaScript 最佳实践
    PHP正则表达式详解(三)
    $_SERVER["SCRIPT_NAME"]、$_SERVER["PHP_SELF"]、$_SERVER["QUERY_STRING"]、$_SERVER["REQUEST_URI"]
    PHP判断远程文件是否存在
    HDOJ1251-统计难题(trie树入门)
    Spark的日志配置
    实现Android 动态载入APK(Fragment or Activity实现)
    OC与JS互相调用
    mac os使用lsusb命令和连接未知的Android设备
  • 原文地址:https://www.cnblogs.com/TripL/p/13654999.html
Copyright © 2011-2022 走看看