监控MySQL的性能,应该主要观察那几个监控项?

监控MySQL的性能,应该主要观察那几个监控项?


一、liunx操作系统层面
    1、整体cpu负载的%user最好不长期超过20%(若%user太高,有极大可能性是索引使用不当)。
    2、整体cpu负载的%iowat最好不长期超过10%(确认I/O子系统是否有明显瓶颈)。
    3、整体cpu负载的%idle最好保持在70%以上(让CPU保持低负载)。
    4、关注各个逻辑CPU之间的负载是否均衡(可能是中断不均衡导致性能问题)。
    5、关注是否有swap产生(注意关闭NUMA),可使用命令或工具:vmstat、sar、dstat等。


二、MySQL状态层面
    1、主要关注tps、qps、并发连接数(Threads_connected)、并发活跃线程数(Threads_running)、临时表(*tmp_disk_tables*)、锁(*locks_waited*, Innodb_row_lock*)等指标。
    2、关注当前是否有不良线程状态,例如:copy*to*tmp table、Creating sort index、Sorting result、Creating tmp table、长时间的Sending data等。
    3、关注InnoDB buffer pool page的使用情况,主要是Innodb*pages_free、Innodb*wait_free两个。
    4、关注InnoDB的redo log刷新延迟,尤其是checkpoint延迟情况,并关注unpurge list大小。
    5、关注innodb status中是否有long semaphore wait的情况出现。
    6、关注slow query sql的增长情况。