k8s容器IO使用率排查说明
1.iostat确定使用率高的容器
通过执行命令,找到io使用率高的device
# 在容器执行以下命令,查看io使用率是否高 $iostat -x 1 # 通过以下内容我们看到dm-39使用率比较高 Linux 3.10.0-693.5.2.el7.jd_3313.x86_64 (xxxx-xxxxx-1230843875757658112) 03 /25/2020 _x86_64_ (64 CPU) avg-cpu: %user % nice %system %iowait %steal %idle 2.61 0.00 1.07 0.17 0.00 96.16 Device: rrqm /s wrqm /s r /s w /s rkB /s wkB /s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 sdb 0.00 4059.00 1033.00 10002.00 32736.00 100704.00 24.18 0.83 0.08 0.44 0.04 0.04 48.90 ... dm-39 0.00 0.00 1031.00 10882.00 32536.00 53928.00 14.52 0.79 0.07 0.43 0.03 0.04 44.10 ... |
2. 根据Device查找对应的容器名称
登录容器所在的物理机执行以下命令
# 切换到/dev/mapper目录,该目录防止了Device和容器的Link $ cd /dev/mapper/ # 查看Link信息 $ ls -alh | grep dm-39 # 根据以下返回信息,我们可以定位到dm-39对应的容器名称包含74a316e4_54ac_11ea_836d_246e96abba70 # lrwxrwxrwx 1 root root 8 Feb 25 15:58 docker-74a316e4_54ac_11ea_836d_246e96abba70 -> ../dm-39 |
3.根据容器名称查找POD
通过2步已经获取到容器名称74a316e4_54ac_11ea_836d_246e96abba70,我们直接使用容器名称的前缀74a316e4就可以过滤出容器
$ docker ps | grep 74a316e4 # 根据返回内容就可以定位到具体的POD ed514c9ee577 09986390982a "/usr/sbin/init" k8s_xxxxx_xxxxx-xxxxx- 1230843875757658112_xxxxxx_74a316e4-54ac-11ea-836d-246e96abba70_0 7bab556b2e0b pause "/pause" k8s_POD_xxxxx-xxxxx-1230843875757658112_xxx-xxxxx_74a316e4-54ac-11ea-836d-246e96abba70_0 |
根据以上步骤就可以定位到具体的容器,然后根据容器的监控再分析为什么io会高
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
2018-03-25 用jQuery的attr()设置option默认选中无效的解决 attr设置属性失效
2016-03-25 linux命令学习-2-dmesg