MySQL反应慢排查思路
数据库异常假死排查需要数据(当时问题的时间,前后时间在2个小时的数据就行)
1.MySQL相关配置
整体可以借助于pt-mysql-summary生成(percona-tools工具)
2.操作系统方面/var/log/message & 内核日志
硬件基本信息,可以借助于pt-summary信息(percona-tools工具)
系统的CPU信息
系统当时的磁盘IO信息
3.MySQL监控数据
MySQL连接数据信息
MySQL的DML(含insert)的每秒QPS数据
show engine innodb status\G 输出
show global variables;show global status;select sleep(5);show global status;输出
4.MySQL的error log
5.对应时间点的慢日志
当前状态
当前硬件情况 & 操作系统 & MySQL版本
pt-summary
pt-mysql-summary
CPU情况
CPU指标分为:
us -> User : 用户态进程CPU开销
sy -> System : 内核的CPU开销
id -> idle : 空闲的CPU
wa -> io_wait : 用于IO等待的CPU开销
hi/si -> 中断相关
st -> 用于vm切换类的CPU开销
IO情况
iostat -m -x 1 10
查看iops,iotop -oP,IO吞吐量
利用pt-ioprofile查看热点
内存情况
free -m
vmstat -S m 1 10
MySQL状态分析
MySQL关键配置
innodb_buffer_pool_size
innodb_thread_concurrency
sync_binlog
innodb_flush_log_at_trx_commit
long_query_time
show processlist;
show global status like "%thread%";
show engine innodb status\G
show processlist
几个状态
cleaning up : 进程执行完毕,清理战场
opening tables : 进程去打开表
sending data : 读取数据向客户端发送
statistics : 服务端收集统计类信息
这几个状态时有问题的