一、性能查看几款小工具:
Top
查看:观察 load average :1分钟,5分钟,15分钟的平均负载值
1. us% 用户使用的 CPU 占比,如果 us% 太高, 极有可能索引使用不当。
2. sy% 系统内核使用的CPU占比,如果sy% 太高,要注意MySQL 连接数以及MySQL 的锁信息。
3. wa% io 使用 CPU 的占比,如果wa% 太高,要关注MySQL是否使用了硬盘临时表,或者大量的刷盘等操作,
也有可能是硬盘太慢,或硬盘故障,可以使用iostat 等工具进行观察。
Mpstat
各个逻辑CPU 之间的负载是否均衡,(可能是中断不均衡导致性能问题),可以使用 mpstat 命令来进行详细观察。
Vmstat
通过vmstat 来观察每秒的进程、内存、swap、io、cpu 等详情情况。
Iostat -x
关注IO 使用情况 iostat -x
1.rrqm/s #每秒读取的扇区数。
2.wrqm/s #每秒写入的扇区数。
3.avgrq-sz #平均请求扇区的大小
4.qvgqu-sz #是平均请求队列的长度。
5.await #每一个IO 请求的相应时间。
6.%util #在统计时间内所有处理IO 时间,除以总共统计时,暗示了设备的繁忙程度。
二、MySQL 查看
1. tps,qps,并发连接数(thread_connected)、并发活跃线程数(thread_running)、临时表(tmp_disk_tables)、锁(locks_waited,Innodb_row_lock*)等指标。
2.通过 show processlist ,查看当前是否有不良线程状态,例如: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.观察是否有大事务的阻塞。
参考: 田帅萌 3306 π
https://github.com/enmotplinux/old_mysql_20181224/blob/master/mysql_inspection.py
https://github.com/enmotplinux/old_mysql_20181224/blob/master/sos.sh