数据库压测和Java系统压测是两回事,因为有一种可能,你的数据库每秒可以抗下2000个请求,但是你的Java系统每秒只能抗下500个请求,这也是有可能的。所以不光要对Java系统压测,还需要对数据库进行压测,心里有个数。
    压测指标术语:
    QPS:Query Per Second,你的数据库每秒可以处理多少个请求,一次请求就是一条SQL语句,对于QPS而言,一些Java系统或者中间件系统在进行压测的时候,也可以使用这个指标。
    TPS:Transaction Per Second,每秒可以处理的事务量,这个TPS往往用在数据库中较多一些,从字面上看,数据库每秒会处理多少次事务或者回滚。
    IO相关的压测指标:
    IOPS:指的是机器的随机IO并发处理的能力,比如机器可以达到200 IOPS,意思是每秒可执行200个随机IO读写
    吞吐量:这个指的是机器的磁盘存储每秒可以读写多少字节的数据量。一般普通磁盘的顺序写入的吞吐量每秒可以达到200MB左右
    latency:这个指标说的是往磁盘里写入一条数据的延迟。磁盘读写延迟越低,你的数据库性能越高压测时要关注的其他性能指标。
    CPU负载:CPU负载是一个非常重要的性能指标,假设你的数据库压测到了每秒3000请求,可能其他的性能指标都还正常,但是CPU负载特别高,那么说明你的数据库不能继续往下压测更高的QPS否则CPU吃不消
    网络负载:主要看你的机器带宽情况,在压测到一定的QPS和TPS的时候,每秒钟的机器网卡输入多少MB数据,输出多少MB数据。可能你的网络带宽最多每秒传输100MB的数据,那么可能你的QPS到1000的时候,网卡打满了,已经每秒传输100MB的数据了,此时其他指标都还算正常,但是也不能继续压测下去了。
    内存负载:看看压测到一定情况下,你的机器内存耗费了多少,如果机器内存耗费过高,说明也不能继续压测下去了

    latency:数据库延迟查看:

    1. 在从服务器上执行show slave status;可以查看到很多同步的参数,我们需要特别注意的参数如下:
    2. Master_Log_File SLAVE中的I/O线程当前正在读取的主服务器二进制日志文件的名称
    3. Read_Master_Log_Pos 在当前的主服务器二进制日志中,SLAVE中的I/O线程已经读取的位置
    4. Relay_Log_File SQL线程当前正在读取和执行的中继日志文件的名称
    5. Relay_Log_Pos 在当前的中继日志中,SQL线程已读取和执行的位置
    6. Relay_Master_Log_File SQL线程执行的包含多数近期事件的主服务器二进制日志文件的名称
    7. Slave_IO_Running I/O线程是否被启动并成功地连接到主服务器上
    8. Slave_SQL_Running SQL线程是否被启动
    9. Seconds_Behind_Master 从属服务器SQL线程和从属服务器I/O线程之间的时间差距,单位以秒计。

    从库同步延迟情况出现的

    1、show slave status显示参数Seconds_Behind_Master不为0,这个数值可能会很大
    2、show slave status显示参数Relay_Master_Log_FileMaster_Log_File显示bin-log的编号相差很大,说明bin-log在从库上没有及时同步,所以近期执行的bin-log和当前IO线程所读的bin-log相差很大
    3、mysql的从库数据目录下存在大量mysql-relay-log日志,该日志同步完成之后就会被系统自动删除,存在大量日志,说明主从同步延迟很厉害