zoukankan      html  css  js  c++  java
  • MySQL容量规划和性能测试

    性能容量关键指标:

        每秒tps,峰值tps

        基础数据量,日均增长数据量

        最大连接数

        内存分配

        IOPS

    重点关注指标:

    业务指标:

        每秒并发用户请求、每秒订单数、用户请求响应时长

    折算成性能指标:

        qps、tps、rt

    提出测试预期目标:

        根据性能指标制定测试方案

        测试结果尽可能以这些指标来表达

    业务预期指标解读

        读写比例:读多写少、读少写多、读写相当、统计为主、纯写入为主

        存盘模式(数据可靠性要求):实时、异步、不关注

        用户端的语言、字符编码(latin1、utf8、utf8mb4)

        数据恢复实时性要求

        日新增数据量

        数据库连接方式

        历史数据归档方式

        业务平均、峰值指标

    业务目标评估要点

        服务器配置

        存储引擎选择

        数据库高可用方案

        数据可用性方案

        数据库备份方案

    相应优化方案:

        CPU,更换更好、更多核心的CPU

        I/O,更换IOPS性能更高的设备,例如SSD,PCIE SSD

        内存,增加内存,合理分配

        MySQL,升级版本

        选择InnoDB引擎,并且设计合适的表结构,避免锁竞争

    建立性能基线

    某个运行时刻的状态记录、快照

        中位线 or 均线

    用于和未来的状态进行对比

    未来时刻产生关键事件后的新状态,作为下一个基线

    https://github.com/zhishutech/mysqldba/tree/master/mysql-snapshot

    系统性能指标:

        CPU、内存、I/O

    MySQL性能指标:

        tps、qps、DMLs、响应时长、内存利用率、锁等待

    业务指标

    每秒业务量、每次交易时长

    采集工具:

        top、free、vmstat、sar、iostat、dstat、nmon、oradba.pl等

    CPU:%user、%idle、%sys、%iowait

        %user (<10%)、%idle (>80%)、%sys (<5%)、%iowait (<10%)

    IO:tps/iops、await、svctm、%util

        tps/iops (越大越好)、await (<5~10)、svctm (<5)、%util (<50%)

    内存:free (free、buffers、cached)、used,以及swap

        used非常高,但cached非常低,要引起关注了,可能发生内存泄漏

    MySQL

        tps越大越好、rt越小越好、lock越少越好、hit ratio越高越好、waits越少越好 

        table_locks_wait,innodb_log_waits,innodb_buffer_pool_wait_free大于0说明负载很大

    压力测试

    基准压力测试目的:

        采购新设备,评估新设备性能

        开发新项目,评估数据库容量

        新系统上线前,预估/模拟数据库负载

        更换数据库版本,评估性能变化

    设计测试模型要点:

        明确测试的核心目标、诉求

        排除干扰,专注测试目的

        确定测试环境

        确定测试过程中的衡量和变量

        保证测试结果的可重复性

    设计压测模型注意事项:

        只在本地加压

        压测数据量小

        压测时间过短

        压测模式太少

        压力负载过大或过小

        每轮测试完毕要净化环境

    MySQL数据预热:

        5.6以前,执行一次mysqldump,或全量select

        5.6以后,buffer bool dump & restore

    常用压测工具介绍:

        tpcc-mysql、sysbench、fio

    测试方法,结果解读:

        MySQL压力测试基准值

        测试结果模板

    测试报告编写 

    压测client、server分开

    压测数据量、时长、并发量过大过小都不合适

    压测结果除了TPS/TPmC,也要关注性能数据

    利用压测发现性能瓶颈因素

    系统性能瓶颈大概率发生在磁盘I/O层

    相应的优化措施,大多数靠加索引

  • 相关阅读:
    统一身份认证(CAS)客户端测试获取信息代码
    常用的java工具类
    windows 批处理(bat)中执行程序后不等待直接退出(cmd中新进程执行程序)
    持续交付的八条原则,你能做到几条?(转)
    灵动标签调用栏目导航技巧
    .net网络编程(2)网络适配器
    Property Value Inheritance Tip(1)
    排序算法补充
    编码参考(Encoding)
    .net网络编程(3)Socket基础
  • 原文地址:https://www.cnblogs.com/allenhu320/p/11365103.html
Copyright © 2011-2022 走看看