• ADADADADAD

    MySQL数据库监控项的示例分析[ mysql数据库 ]

    mysql数据库 时间:2024-11-26 22:15:54

    作者:文/会员上传

    简介:

    监控项目 MYSQL.QPS MYSQL.TPS MYSQL.READSMYSQL.WRITES MYSQL.RWRATIO MYSQL.KEY_BUFFER_READ_HITSMYSQL.KEY_BUFFER_WRITE_HITSMYSQL.QUERY_CACHE_HITSMYSQL.INNODB_BUFFE

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    监控项目
    MYSQL.QPS
    MYSQL.TPS
    MYSQL.READS
    MYSQL.WRITES
    MYSQL.RWRATIO
    MYSQL.KEY_BUFFER_READ_HITS
    MYSQL.KEY_BUFFER_WRITE_HITS
    MYSQL.QUERY_CACHE_HITS
    MYSQL.INNODB_BUFFER_READ_HITS
    MYSQL.THREAD_CACHE_HITS
    MYSQL.SLOW_QUERIES_PER_SECOND
    MYSQL.TEMP_TABLES_TO_DISK_RATIO
    MYSQL.TMP_DISK_TABLES_PER_SECOND
    MYSQL.SELECT_FULL_JOIN
    MYSQL.SELECT_FULL_JOIN_IN_ALL_SELECT
    MYSQL.CONNECTIONS
    MYSQL.CONNECTION_TIME
    MYSQL.INNODB_ROW_LOCK_CURRENT_WAITS
    MYSQL.PROCESS_OF_MYSQLD
    MYSQL.HA_STATUS
    MYSQL.SLAVE_STATUS
    MYSQL.TCP_COUNT
    MYSQL.TCP_AVG
    MYSQL.TCP_MAX
    MYSQL.SLAVE_DELAYS


    一.MYSQL.QPS
    定义:QPS 实际上是指 MySQL Server过去10秒平均每秒执行的 Query总量(包括show .select,set names,set global 等等);
    计算公式:QPS=questions(当前值)-questions(10秒前的值)/10
    是否保留:是
    报警阀值:视各个业务情况(主要是query的复杂度)及服务器配置设置.大部分设置为10000.
    报警类型:大于10000 严重.大于12000 灾难


    二.MYSQL.TPS
    定义:TPS指每秒向mysql sever提交的修改(包含update.insert.delete.replace);
    老的计算方式:
    T1=Handler_commit+Handler_rollback (均为当前值)
    T2= Handler _commit+ Handler _rollback (均为10s之前值)
    TPS=T1-T2/10
    新的计算方式:
    T1= Com_insert+ Com_replace+Com_delete+Com_update (均为当前值)
    T2= Com_insert+ Com_replace+Com_delete+Com_update (均为10s之前值)
    TPS=T1-T2/10
    是否保留:是
    报警阀值:视各个业务情况及服务器配置设置.大部分设置为4000.
    报警类型:大于4000严重.大于6000 灾难


    三.MYSQL.READS
    定义:READS指每秒向msyql sever提交的读请求次数(仅指select);
    计算公式:
    R1=com_select+ qcache_hits (均为当前值)
    R2=com_select+ qcache_hits (均为10秒前的值)
    READS=R1-R2/10
    是否保留:是
    报警阀值:


    四.MYSQL.WRITES
    定义:WRITERS 指每秒向mysql server提交的写请求次数:
    计算公式:
    W1=com_insert+com_delete+com_update (均为当前值)
    W2=com_insert+com_delete+com_update (均为10s之前的值)
    WRITES=W1-W2/10
    是否保留:不保留
    去除原因:这个监控选项和tps重复.


    五.MYSQL.RWRATIO
    定义:RWRATIO指自mysql server启动以来的读写比例.注意这里不是以10s前后来衡量的;
    计算公式:
    R= com_select+ qcache_hits (均为当前值)
    W= com_insert+ com_delete+ com_update+ com_replace (均为当前值)
    RWRATIO=R/W (得出值保留小数点前的值)
    是否保留:不保留
    去除原因:这个监控选项可以间接通过mysql.reads和mysql.tps计算出来.无需另外设置监控项。


    六.MYSQL.KEY_BUFFER_READ_HITS
    定义:KEY_BUFFER_READ_HITS 指myisam引擎向key buffer读命中率的情况.这个buffer用来存储myisam的索引key;
    计算公式:
    KEY_BUFFER_READ_HITS=(1-( key_reads/ key_read_requests))*100% (均为当前值)
    (得出值保留小数点前的值)
    是否保留:不建议保留
    去除原因:现在只有sso和酒仙桥cms是myisam引擎.后续项目全部采用innodb.且这两个项目会在合适时机会全部转换为innodb。且目前这个2个项目数据压力稳定.或者暂时只监控这2个业务.更换引擎后在删除此监控项。


    七.MYSQL.KEY_BUFFER_WRITE_HITS
    定义:KEY_BUFFER_WRITE_HIT 指myisam引擎向key buffer写入命中率的情况;
    计算公式:
    KEY_BUFFER_WRITE_HIT =(1-(key_writes/key_write_requests))*100 (均为当前值)
    (得出值保留小数点前的值).
    是否保留:不建议保留
    去除原因: 这个监控项只能体现myisam的命中率.myisam在未来项目中将会被淘汰.另外也没有必要专门监控mysiam的write命中情况.关注key buffer的总体命中情况.更有意义。


    八.MYSQL.QUERY_CACHE_HITS
    定义:QUERY_CACHE_HITS指查询缓存的命中率情况.值越高代表query cache作用越大.从而降低引擎压力.在mysql server层返回用户结果;
    计算公式:
    QUERY_CACHE_HITS =qcache_hits/( qcache_hits+ qcache_inserts) *100% (均为的当前值)
    (得出值保留小数点前的值).
    是否保留:不建议保留
    去除原因: 线上关键业务的修改量都比较大.而且操作query cache是一个global lock.导致 经常发生sql 停留在Waiting for query cache lock和失效query cache的状态。另外.一个业务如果超过95%的sql是select.才建议打开query cache。


    九.MYSQL.INNODB_BUFFER_READ_HITS
    定义:INNODB_BUFFER_READ_HITS.极为重要的一个状态值.反应innodb引擎所需数据在内存中的命中的情况。
    计算公式:
    INNODB_BUFFER_READ_HITS=(1-(innodb_buffer_pool_reads/innodb_buffer_pool_read_requests))*100% (均为当前值)(得出值保留小数点前的值).
    是否保留:保留
    报警阀值:小于95%
    报警类型:小于95% 警告


    十.MYSQL.THREAD_CACHE_HITS
    定义:THREAD_CACHE_HITS=( 1-( threads_created/ connections))*100% (均为当前值)
    (得出值保留小数点前的值).
    是否保留:保留
    报警阀值:小于90%
    报警类型:小于90% 警告


    十一.MYSQL.SLOW_QUERIES_PER_SECOND
    定义:SLOW_QUERIES_PER_SECOND 指每过去10秒平均每秒产生的slow log的总量;
    计算公式:
    SLOW_QUERIES_PER_SECOND = Slow_queries(当前值)- Slow_queries(10秒之前的值)/10
    是否保留:保留
    报警阀值:
    报警类型:



    十二.MYSQL.TEMP_TABLES_TO_DISK_RATIO
    定义:TEMP_TABLES_TO_DISK_RATIO指在硬盘上创建临时表的几率,越小越好.代表临时表都创建在内存中。
    计算公式:
    TEMP_TABLES_TO_DISK_RATIO=(created_tmp_disk_tables/ created_tmp_tables)*100%
    (均为当前值)(得出值保留小数点前的值).
    是否保留:不建议保留
    去除原因:了解sql性能是否存在问题.不应该仅关注这个比率.一条性能很差的sql产生磁盘临时表对性能的影响可能比100条产生内存临时表的sql大很多。应该积极关注慢查询中那些执行时间非常长sql。


    十三.MYSQL.TMP_DISK_TABLES_PER_SECOND
    定义:TMP_DISK_TABLES_PER_SECOND 指过去10秒内每秒创建磁盘临时表的数量;
    计算公式:
    TMP_DISK_TABLES_PER_SECOND=created_tmp_disk_tables(当前值)-created_tmp_disk_tables(10秒之前的值)/10
    是否保留:建议保留
    报警阀值:
    报警类型:


    十四.MYSQL.SELECT_FULL_JOIN
    定义:SELECT_FULL_JOIN 指每秒执行full join的总量.这个参数一般发生在join过程中没有使用索引的情况;
    计算公式:
    SELECT_FULL_JOIN= Select_full_join( 当前值)- Select_full_join(10秒之前的值)/10
    是否保留:不建议保留
    去除原因:并不是没有利用索引的join性能就很差.对于不合理的sql.如果带来性能影响.可以打开慢查询根据进行调优.full join可能只是其中一个原因。 一些小表的full join对性能冲击很小。


    十五.MYSQL.SELECT_FULL_JOIN_IN_ALL_SELECT
    定义:SELECT_FULL_JOIN_IN_ALL_SELECT 指过去10秒钟里面.full join占总select的比例;
    计算公式:
    S1= select_full_join(当前值)- select_full_join(10秒之前的值)
    S2= com_select(当前值)- com_select(10秒之前的值)
    SELECT_FULL_JOIN_IN_ALL_SELECT=s1/s2*100%(得出值保留小数点前的值).
    是否保留:不建议保留
    去除原因:理由同上


    十六.MYSQL.CONNECTIONS
    定义:CONNECTIONS指自mysql server启动以来一共产生的连接数.这个值不能反映当前连接数.建议用Threads_connected 来衡量;
    新的计算方式:CONNECTIONS= Threads_connected (当前值)
    是否保留:保留
    报警阀值:800
    报警类型:大于800 严重.大于1500 灾难


    十七.MYSQL.CONNECTION_TIME
    定义:从mysql server所在服务器上发送一个简单的查询所需要的时间。
    是否保留:不建议保留
    去除原因:tcp_average比此参数更具参考价值.因为这个time是朝服务器本身发送请求.而tcp average关注的是应用ip向db server统计出来的时间。


    十八.MYSQL.INNODB_ROW_LOCK_CURRENT_WAITS (新增)
    定义:INNODB_ROW_LOCK_CURRENT_WAITS.因为公司大部分引擎都是innodb.所以有必要监控innodb行锁的等待情况.状态值反应了过去10秒有几个sql处于等待row lock的状态。
    计算公式:INNODB_ROW_LOCK_CURRENT_WAITS= Innodb_row_lock_current_waits(当前值)
    是否保留:保留
    报警阀值:无
    报警类型:无



    十九.MYSQL.PROCESS_OF_MYSQLD
    定义:process_of_mysqld用来监控mysqld的进程数.如果返回0.表示mysqld进程挂掉。
    是否保留:保留
    报警阀值:为0则报警
    报警类型:灾难


    二十.MYSQL.HA_STATUS
    定义:ha_status用来监控MHA进程是否存在.如果返回0.表示由于MHA的切换导致MHA自动退出.或者MHA服务没有启动。
    是否保留:保留
    报警阀值:为0则报警
    报警类型:严重




    二十一.MYSQL.SLAVE_STATUS
    定义:mysql.slave_status用来监控slave的io thread和sql thread.如果任意一个线程的状态为no.则返回0.否则返回1。
    是否保留:保留
    报警阀值:为0则报警
    报警类型: 严重


    二十二: MYSQL.TCP_COUNT
    定义:利用percona的tcprstat从底层探测平均每秒发送到mysql server的请求数.而不是在mysql server的内部进行统计。
    是否保留:不建议保留
    去除原因:这个监控的结果和qps的数目一致.重复监控


    二十三:MYSQL.TCP_AVG
    定义:每秒内发送到mysql server所有请求的平均响应时间.此值大.表明mysql server异常.对请求做出响应的时间过长。单位为微妙。
    是否保留:保留
    报警阀值:无
    报警类型:无


    二十四:MYSQL.TCP_MAX
    定义:过去一秒内.发送到mysql server所有请求中响应时间最长的请求所花费的时间。单位为微妙。
    是否保留:保留
    报警阀值:无
    报警类型:无


    二十一.MYSQL.SLAVE_DELAYS
    定义:mysql.slave_delay用来监控slave的sql thread同步master是否有延迟.如果有.返回延迟的秒数.如果没有延迟.返回空
    是否保留:保留
    报警阀值:1200
    报警类型:大于1200 严重.大于3600 灾难

    MySQL数据库监控项的示例分析.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: mysql数据库