监控io性能
- 有时候,cpu占用率不高,但是负载却很高
- 这种情况可能是由于 io 性能不足引起的
- 可以使用 iostat 命令查看磁盘状态
- 在安装sysstat包的时候,就已经包含了 iostat 命令
- 可以直接使用 iostat 查看磁盘状态
- 也可以使用 iostat 1 每秒输出一次磁盘状态
- 一个重要的用法是 iostat -x
- 参数 -x 可以查看到一个重要的数据
- 如上图所示,使用x参数,可以查看到 %util 这一列数据
- cpu的使用时间里面,有两部分
- 一部分是 处理进程计算的时间
- 一部分是 等待 io 的时间
- 某些时候要通过磁盘拿到数据才能进行计算处理
- 或者要把一些数据进行保存写入磁盘
- 磁盘读写的这个时间就是io等待时间
- cpu需要读取磁盘数据或者写入磁盘数据才能进行下一步动作
- 这个数据存取的时间就是cpu的io等待时间
- %util 就是 io 等待时间 占 cpu总时间的百分比
- 如果磁盘的 %util 列的值很大,达到50%,60%
- 说明磁盘io性能不足,导致io等待时间太长
- 一般来说,%util 值大,磁盘读写量都会很大,因为频繁读取
- 但是如果出现,%util值大,但是磁盘读写量却不大
- 说明这个磁盘可能出现了问题,也许需要更换磁盘了
- 如果想知道哪一个进程在频繁读写磁盘
- 可以使用 iotop 命令
- 这个命令不是默认安装的,需要进行安装
- 使用 yum install -y iotop 进行安装
- 如图,直接使用 iotop 命令就可以进入这个界面
- 也是动态显示数据的界面
- 看 IO 列就可以知道进程的io占比
- 默认排序规律是 io 占比高的进程在上面
free命令
- free命令可以查看内存使用情况
- 使用 free 命令会出现上图数据
- 有三行数据,第一行是列名称,第二行是内存数据,第三行是交换分区的数据
- 主要看第二行内存数据
- 第二行数据,第一列 total 是内存总大小,单位是kb
- 如图,还可以使用两个参数,-m 或者 -h
- 参数 m 的意思是,把数据的显示单位变成 MB,原本是 kb 的
- 参数 h 的意思是,在数据后面加上更容易阅读的单位显示
- 可以看到,使用参数 h 之后,每个数据后面都有单位显示了
- 第二列数据used是 使用了多少内存
- 第三列数据free是 剩余多少内存
- 但是有一个问题,就是 used + free 不等于 total
- 这是因为 有一部分内存 被分配给了 buff/cache
- buff/cache 是 缓冲/缓存
- 因为磁盘速度与cpu速度差距太大,所以中间需要内存做缓冲
- 如上图,数据从磁盘到cpu,经过内存的部分就是 cache 缓存
- 数据从cpu到磁盘,经过内存的部分就是 buffer 缓冲
- 最后一列数据 available 的数值是 free的值 + 还没有被使用的 buff/cache 的值
- 所以内存真正可以使用的空间值是 available 的值,而不是 free 的值
- 想看内存真正剩余空间应该看 available