获取硬件配置信息

检查项命令行
机器型号dmidecode | grep "Product Name"
CPUcat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
内存free-m
磁盘df -h
网卡ifconfig -a
操作系统uname -a

性能检查

检查项命令行参考指标
CPU占用率topCPU每个线程占用率小于80%
CPU负载uptimeCPU负载应小于10
内存占用率free -m内存使用率小于80%
内存swap使用率free -mswap使用率小于10%
磁盘使用率df -ah磁盘使用率小于80%
磁盘负载iostat -xkd 1util 应在10%以内
系统开放端口nestat -an | grep LISTEN只显示出提供对应服务的端口, 无关的端口应一律关闭
网卡流量iftop网卡流量小于带宽的50%
进程检查ps aux | more关闭占用资源的无用进程

数据库巡检

检查项命令行参考指标
进程检查ps -ef | grep mysqld检查port以及datadir
数据库版本select version()
超大库检查du -sh 每个数据库目录
超大表检查show table status检查输出后的Rows、Data_length指标,Rows应小于1千万条
错误日志show variables like '%log_error%'查看文件中有ERROR的日志
慢查询日志show variables like '%slow%'检查慢日志是否开启,若开启,检查慢日志文件中的语句
重要参数检查backlog
max_allowed_packet
interactive_timeout
wait_timeout
skip_name_resolve
max_connections
log_bin
expire_logs_days
open_file_limit
table_open_cache
thread_cache_size
sort_buffer_size
join_buffer_size
innodb_buffer_pool_size
innodb_file_per_table
innodb_open_files
innodb_thread_concurrency
innodb_flush_log_at_commit
innodb_log_buffer_size
innodb_log_file_size
innodb_log_files_in_group
general_log
log_error
slow_query_log
long_query_time
根据机器配置以及应用需求检查每个参数是否配置合理
QPS检查间隔执行show status like 'queries'通过两次的间隔时间做差值,计算QPS
读写比检查show status like 'com_%'读请求是com_select;
写请求是com_insert;
com_update;com_delete通过统计读写的请求数,算出读写比例。
当前连接数检查show status like '%Threads_connected%'此数据显示当前的连接数,应远小于max_connections。
最大连接数检查show status like '%max_used_connections%';
show variables like '%max_connections%';
若max_used_connections逼近max_connections,则需要调大max_connections
异常连接检查show variables like '%Aborted%'检查Aborted_clients以及 Aborted_connects值是否正常
并发线程检查show global status like '%threads_running%';此值应小于10,如果过大,说明并发数太多,存在慢语句。
线程缓存池检查show status like '%threads_created%';
show status like 'connections';
threads_created/connections为缓存未命中率,若此值过高,则需要调大hread_cache_size
运行线程状态查询show full processlist;查看墚前并发线程是否状态正常
InnoDB Buffer Pool检查show status like 'Innodb_buffer_pool_read_requests';
show status like 'Innodb_buffer_pool_reads';
Innodb_buffer_pool_reads/Innodb_buffer_pool_read_requests为缓存未命中率,若此值过高,则需要调大innodb_buffer_pool_size。
锁等待检查show full processlist;检查state列是否存在wait for xxx lock的状态,如果有则存在锁等待
InnoDB死锁检查show engine innodb status;查看LATEST DETECTED DEADLOCK输出段,如果存在,需要摘取相应的语句。
InnoDB长事务检查show engine innodb status;检查TRANSACTIONS输出段,看是否存在ACTIVE时间过长的事务,如果存在,则需要关注。
表缓存检查show global status like '%opened_tables%';
show variables like '%table_open_cache%';
若opened_tables过大,则需要调大table_open_cache的值。
查询缓存检查show variables like '%query_cache%'一般情况下,需要禁用query cache。
临时表检查show global status like '%tmp%';如果Created_tmp_tables,Created_tmp_disk_tables或者Created_tmp_files较高,则需要排查慢查询(b子查询、排序、Group By等)
binlog是否开启show variables like 'log-bin'
复制检查show slave status;查看线程是否正常,延迟是否存在
备份检查检查备分脚本是否正确,检查备份文件是否可用