记一次 swap 导致系统盘高 IOPS 问题排查
背景
笔者关注到服务器 /dev/sda 盘 IOPS 特别高,而且长时间维持在一个恒定水平。因 sda 盘为系统盘,主应用不使用 sda 盘,所以高 IOPS 很反常。但排查的过程并不顺利,故在此记录
排查过程
笔者一开始试图通过 iotop
定位高 IOPS 的进程/线程,但是并没能如愿
后来通过vmstat 1
发现 swpd 这一列数值很高,而且在变动,同时考虑到 swap 分区也在 sda 盘,随猜测 sda 盘 IOPS 高和 swap 分区有关
其实这里如果关注到 si 和 so 两列的数据变化就可以基本定位是内存交换引起的
通过 free -m
也可以看到 swap 确实在被使用
解决方案:关闭 swap 分区
直接使用 swapoff -a
有可能关闭失败,产生报错:
swapoff: /dev/sda2: swapoff failed: Cannot allocate memory
可以使用如下命令来关闭 swap :
复制代码
同时不要忘记注释 /etc/fstab
里面的 swap 分区信息
再次观察监控,我们就可以发现 sda 盘的 IOPS 恢复到正常水平了
复制代码
遗留问题
如何能直观的定位到导致磁盘 IOPS 高的进程/线程
是什么导致了如此高的内存交换
版权声明: 本文为 InfoQ 作者【卫智雄】的原创文章。
原文链接:【http://xie.infoq.cn/article/4a844af9f747fb16e9b4fb9c4】。文章转载请联系作者。
评论