监控io性能

  • 有时候,cpu占用率不高,但是负载却很高
  • 这种情况可能是由于 io 性能不足引起的
  • 可以使用 iostat 命令查看磁盘状态
  • 在安装sysstat包的时候,就已经包含了 iostat 命令
  • 可以直接使用 iostat 查看磁盘状态
  • 也可以使用 iostat 1 每秒输出一次磁盘状态
  • 监控io性能,free命令,ps命令-LMLPHP

  • 一个重要的用法是 iostat -x
  • 参数 -x 可以查看到一个重要的数据
  • 监控io性能,free命令,ps命令-LMLPHP
  • 如上图所示,使用x参数,可以查看到 %util 这一列数据
  • cpu的使用时间里面,有两部分
  • 一部分是 处理进程计算的时间
  • 一部分是 等待 io 的时间
  • 某些时候要通过磁盘拿到数据才能进行计算处理
  • 或者要把一些数据进行保存写入磁盘
  • 磁盘读写的这个时间就是io等待时间
  • cpu需要读取磁盘数据或者写入磁盘数据才能进行下一步动作
  • 这个数据存取的时间就是cpu的io等待时间
  • %util 就是 io 等待时间 占 cpu总时间的百分比
  • 如果磁盘的 %util 列的值很大,达到50%,60%
  • 说明磁盘io性能不足,导致io等待时间太长
  • 一般来说,%util 值大,磁盘读写量都会很大,因为频繁读取
  • 但是如果出现,%util值大,但是磁盘读写量却不大
  • 说明这个磁盘可能出现了问题,也许需要更换磁盘了

  • 如果想知道哪一个进程在频繁读写磁盘
  • 可以使用 iotop 命令
  • 这个命令不是默认安装的,需要进行安装
  • 使用 yum install -y iotop 进行安装
  • 监控io性能,free命令,ps命令-LMLPHP
  • 如图,直接使用 iotop 命令就可以进入这个界面
  • 也是动态显示数据的界面
  • 看 IO 列就可以知道进程的io占比
  • 默认排序规律是 io 占比高的进程在上面

free命令

  • free命令可以查看内存使用情况
  • 监控io性能,free命令,ps命令-LMLPHP
  • 使用 free 命令会出现上图数据
  • 有三行数据,第一行是列名称,第二行是内存数据,第三行是交换分区的数据
  • 主要看第二行内存数据
  • 第二行数据,第一列 total 是内存总大小,单位是kb
  • 监控io性能,free命令,ps命令-LMLPHP
  • 如图,还可以使用两个参数,-m 或者 -h
  • 参数 m 的意思是,把数据的显示单位变成 MB,原本是 kb 的
  • 参数 h 的意思是,在数据后面加上更容易阅读的单位显示
  • 可以看到,使用参数 h 之后,每个数据后面都有单位显示了
  • 第二列数据used是 使用了多少内存
  • 第三列数据free是 剩余多少内存
  • 但是有一个问题,就是 used + free 不等于 total
  • 这是因为 有一部分内存 被分配给了 buff/cache
  • buff/cache 是 缓冲/缓存
  • 监控io性能,free命令,ps命令-LMLPHP
  • 因为磁盘速度与cpu速度差距太大,所以中间需要内存做缓冲
  • 如上图,数据从磁盘到cpu,经过内存的部分就是 cache 缓存
  • 数据从cpu到磁盘,经过内存的部分就是 buffer 缓冲
  • 最后一列数据 available 的数值是 free的值 + 还没有被使用的 buff/cache 的值
  • 监控io性能,free命令,ps命令-LMLPHP
  • 所以内存真正可以使用的空间值是 available 的值,而不是 free 的值
  • 想看内存真正剩余空间应该看 available

ps命令

10-02 13:21