作为故障预警,应该尽量把问题扼杀在摇篮中,当出现问题及时处理,否则等到服务器宕机,再去”救火“工作,往往不能第一时间准确诊断。所以应建立监控流程,能够提前预警阀值,马上查看问题,降低风险。
影响性能的因素
磁盘I/O
影响mysql innodb引擎性能最主要因素是磁盘I/O。最广泛使用的硬盘都是机械硬盘,机械硬盘运作时,磁盘需进行寻址,随机读写速度大大你玩顺序读写。每次读写动作时,磁道可能存在较大的偏移,磁盘寻址时间的延迟,使I/O性能急剧下降。因此生产环境中,常常使用RAID5、RAID10磁盘阵列并行读写,或者采用SSD固态硬盘,大幅提升读写速度。
内存
Innodb引擎会在内存中创建缓存池innodb buffer pool,将数据和索引放在内存中读写,使用数据库性能非常高。因此innodb buffer pool的大小直接影响着mysql的运行性能,生产环境中,会将innodb buffer pool size调整为主机内存的80%左右。
慢SQL
mysql优化器并不会优化所有SQL,SQL不能合理的利用到索引,或者大量使用聚合运算,往往也是造成故障的元凶。
系统性能评估
影响系统性能的因素
- CPU性能
- 内存性能及大小
- 磁盘I/O
系统性能评估指标
CPU性能指标
cpu使用率
cpu load队列负载
cpu idle空闲度
cpu wait I/O等待
内存性能指标
占用内存
资源缓存
文件缓冲
空闲内存
虚拟交换内存
磁盘性能指标
磁盘I/O等待时间
I/O队列,队列过高,说明磁盘处理能力存在瓶颈
平均等待时间
每秒读写速度
性能监控工具
linux下有很多知名的性能查看工具。多数工具都是通过读取系统目录/proc下的各种文件采集性能的。
我经常用的工具有top,sar,dstat,iostat,mpstat等。其中dstat功能丰富,支持查看CPU,内存,磁盘,交换内存,网络,TCP,mysql等指标,是一个全能型的性能查看工具。
dstat工具使用:
# dstat [option] [interval间隔] [count次数]
-