写点什么

记一次 swap 导致系统盘高 IOPS 问题排查

作者:卫智雄
  • 2022 年 9 月 04 日
    上海
  • 本文字数:495 字

    阅读完需:约 2 分钟

记一次 swap 导致系统盘高 IOPS 问题排查

背景

笔者关注到服务器 /dev/sda 盘 IOPS 特别高,而且长时间维持在一个恒定水平。因 sda 盘为系统盘,主应用不使用 sda 盘,所以高 IOPS 很反常。但排查的过程并不顺利,故在此记录

排查过程

笔者一开始试图通过 iotop 定位高 IOPS 的进程/线程,但是并没能如愿


后来通过vmstat 1 发现 swpd 这一列数值很高,而且在变动,同时考虑到 swap 分区也在 sda 盘,随猜测 sda 盘 IOPS 高和 swap 分区有关


其实这里如果关注到 siso 两列的数据变化就可以基本定位是内存交换引起的


通过 free -m 也可以看到 swap 确实在被使用

解决方案:关闭 swap 分区

直接使用 swapoff -a有可能关闭失败,产生报错:

swapoff: /dev/sda2: swapoff failed: Cannot allocate memory


可以使用如下命令来关闭 swap :

sync ; echo 3 > /proc/sys/vm/drop_cachesswapoff -a
复制代码


同时不要忘记注释 /etc/fstab 里面的 swap 分区信息


再次观察监控,我们就可以发现 sda 盘的 IOPS 恢复到正常水平了


tips:现在大容量内存场景下,绝大部分服务器使用场景更建议取消 swap 分区现在我司新上线的服务器也都默认关闭了 swap
复制代码

遗留问题

  • 如何能直观的定位到导致磁盘 IOPS 高的进程/线程

  • 是什么导致了如此高的内存交换


发布于: 刚刚阅读数: 3
用户头像

卫智雄

关注

还未添加个人签名 2018.12.23 加入

还未添加个人简介

评论

发布
暂无评论
记一次 swap 导致系统盘高 IOPS 问题排查_linux运维_卫智雄_InfoQ写作社区