记一次硬盘IO占用过高排查
服务器其他用户反馈读取数据库很卡。
通过 sar -d -p 3
命令发现硬盘占用率比较高
通过 iotop
命令发现主要是被一个名为 [jbd2/sda2-8] 的进程占用
网上说法是 (13条消息) 性能分析之IO分析-jbd2引起的IO高_hualusiyu的专栏-CSDN博客
1 | jbd2的全称是journaling block driver 。这个进程实现的是文件系统的日志功能,磁盘使用日志功能来保证数据的完整性。这个需要评估一下安全和性能哪个更重要,解决方案是升级内核或者牺牲完整性来换性能。 |
差点被误导。
而使用命令 atop -d
发现其实是 snapd 占用
和这篇帖子情况一样 snapd持续运行,引起jbd2/sda2-8持续访问硬盘,占用大量io - Ubuntu中文论坛
1 | [#6](https://forum.ubuntu.org.cn/viewtopic.php?p=3221983#p3221983) |
snapd是ubuntu预装的一个软件包管理工具。
使用 snap list
发现只有一个core,也就是我没有基于snap安装过软件包。
通过 service snapd stop
关闭snapd,再通过 sar -d -p 3
观察硬盘占用,已经完全正常
至此确定是由snapd引发.
通过service snapd start 启动snapd,观察硬盘占用,先是再次上升数十秒后回到了正常。
如果下次再出现占用过高准备禁用或卸载snap。
禁用 systemctl disable snapd.service
卸载 apt purge snapd
相关命令
持续观察硬盘读写情况,每3秒刷新一次
1 | sar -d -p 3 |
sar常用的的参数还有监控CPU情况的
1 | sar -u 3 |
按IO从高到低排序监控进程,实时刷新
1 | iotop |
也能按IO从高到低排序,实时刷新,感觉比iotop好用
1 | atop -d |
atop也有监控CPU情况的
1 | atop -u |