IO瓶颈如何定位?
看到这个问题我们先想一遍哪些原因会出现IO瓶颈:
一,日志
1.日志写的内容是否过多
2.日志的访问量是否过大
3.日志级别设置的是否合理
4.日志是否异步写入
小经验:压测的时候发现CPU波动太大,经过定位是日志异步写入导致,为了减少IO写入,RD把日志会先写到内存,毕竟内存的大小有限,很容易就写满,当内存满的时候会把日志进行压缩,这样就导致了cpu波动
二,磁盘
1.磁盘里面存的大文件是否会定期删除
2.磁盘空间是否过小
三,数据
1.查询量是否过大
2.程序每次连接数据库后是否都关闭
3.是否使用缓存服务器
那么我们怎么来定位是不是IO瓶颈呢?
输入命令:iostat -x
%util:I/O每秒利用率
svctm:平均每次设备I/O操作的服务时间
await:I/O等待时间
a:如果%util 利用率比较高,比如达到70%以上,说明I/O操作太频繁,基本可以判断是I/O瓶颈啦
b:如果await和svctm的值相差的比较大,说明IO排队严重,也基本可以判断是I/O瓶颈
c:如果svctm值较大,说明服务时间太长,可以判断排队太长,也基本可以判断是I/O瓶颈