您的位置:首页 > 数据库 > SQL

mysql性能监控最佳实践(监控产品及监控指标)

2018-08-15 21:18 417 查看

mysql性能监控最佳实践(监控产品及监控指标)
1、监控什么内容
1、os层面
空间监控df -h ,防止文件系统空间满造成数据库hang住
性能cpu监控
vmstat
r队列,这个队列需要小于cpu核数,最大不要超过4倍???
top load average队列数量,同上???
top中sys cpu占比小于5%,iowait占比小于5%,user占比小于70%
top H线程占cpu占比,不要出现70%+的线程
2、内存
vmstat中出现swap in out ,free至少2G以上
3、io
iostat -x 中 r/s w/s
svctm<=6ms
%util<80%
4、网络监控
sar监控中,网络带宽不需要达到90%,一般1000Mbit/s 带宽足够使用,除了备份等场景

5、数据库
真实负载监控

| Innodb_rows_deleted | 99493 |
| Innodb_rows_inserted | 1376624 |
| Innodb_rows_read | 12895545 |
| Innodb_rows_updated | 2720746 |

| Queries | 8932356 |:qps,所有查询语句(i+d+u+s)的数量,如执行一个存储过程,会把存储过程中的执行sql数量也包括。questions是一个存储过程算一个,不管存过程中有多少语句。
tps:
显示的tps:
| Com_commit | 338336 |
| Com_rollback | 1057 |
隐式tps:
| Handler_commit | 12519502 |
| Handler_rollback | 2114 |
IO相关
物理读相关:

| Innodb_buffer_pool_read_requests| 66101630 |内存读的总次数
| Innodb_buffer_pool_reads | 115801 | 数据库物理读
4000
的次数
| Innodb_pages_read | 142404 | 数据库物理读的页数
| Handler_read_rnd_next | 2112621 |很高表示全表扫描的征兆
物理写相关:
| Innodb_buffer_pool_pages_flushed | 232223 |从buffer pool 中刷新页的数量,即写的总页数
| Innodb_buffer_pool_write_requests | 16157929 |写入的次数
| Innodb_dblwr_writes | 0 |:double write 写入的次数
| Innodb_dblwr_pages_written | 0 |:dbwr 写入的页数
| Innodb_log_writes | 131755 |:日志的写入次数
关注pending(读不动,写不动---IO有问题)的数量:
| Innodb_data_pending_reads | 0 |读挂起
| Innodb_data_pending_writes | 0 |写挂起
| Innodb_os_log_pending_writes | 0 |日志挂起
内存相关
| Innodb_buffer_pool_wait_free | 0 |:因为内存短缺,导致物理读不能获
取到内存,为0 表示内存中总有可用页。
| Innodb_buffer_pool_pages_total | 65536 |:innodb 内存总量
| Innodb_buffer_pool_pages_dirty | 0 |:脏页总量,脏页暴增,可能是
系统中有异常的dml
4、连接相关
| Connections | 48 |连接累计值,不管失败或成功,连接总次数。不关注。
| Threads_created | 44 |线程连接建立的次数
| Threads_connected| 1 |当前打开的连接数量,正在连接的数量。
| Connection_errors_max_connections | 0 |因为连接数达到最大而不能连接所
产生的错误次数。>0 表示连接数超了。
5、用户空间相关
| Created_tmp_disk_tables | 0 |:当这个值很大,表示需要增加
tmp_table_size 和max_heap_table_size 的值(在内存中的临时表)。
select 子查询join 子查询,需要把两个子查询求出来,再join,子查询
需要放在内部临时表里,如果内部临时表大小不够用,就会发生磁盘临时表。
| Sort_merge_passes | 0 |sort 用户空间太小发生磁盘排序的数量。
| Binlog_cache_disk_use | 0 |:binlog 用户空间太小发生使用磁盘空间的数量。
6、锁相关
| Innodb_row_lock_waits | 89877 |
| Innodb_row_lock_time | 37340748 |
| Table_locks_waited | 0 |产生表锁等待的数量
7、慢查询相关:
| Slow_queries | 508 |:慢查询执行次数

慢查询日志的解读
对慢查询日志进行tail -f式的解读
8、产生的日志量相关:------产生的redo数量
```
| Innodb_os_log_written | 1255217664 |redo log 产生的量,字节数
show master status;隔段时间监控的差值除以时间间隔得到每秒产生binlog 日志量。
9、网络相关
| Bytes_received | 372184964 |
| Bytes_sent | 1996745853 |
10、全表扫描
| Select_full_join | 0 |表关联时,由于表上没有索引而发生的表扫描的次数。
| Select_scan | 39 |use 数据库或者show status 等时,会扫描小的系统表,做了全表扫描,所以有时候不准,容易产生误导,select 产生全表扫描的次数。
使用Handler_read_rnd_next 值看全表扫描。
| Handler_read_rnd_next | 2113042 |如果这个值很高,表示你正在做很多表扫描,应该是没有使用正确或者高效的索引。
2、监控工具
PT
ZABBIX
SHELL脚本
3、阈值,趋势
有些建龙指标有阈值,例如io的svtime
有些需要看趋势,例如io的tps
阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: