ubuntu缓存故障怎么排查
导读:Ubuntu 缓存故障排查与处理 一、先判断是哪类缓存异常 内存类缓存:表现为系统变慢、可用内存低、命令行卡顿,但磁盘空间充足。用以下命令快速定位: 查看内存与缓存:free -h(关注 available 与 buff/cache 列...
Ubuntu 缓存故障排查与处理
一、先判断是哪类缓存异常
- 内存类缓存:表现为系统变慢、可用内存低、命令行卡顿,但磁盘空间充足。用以下命令快速定位:
- 查看内存与缓存:free -h(关注 available 与 buff/cache 列)
- 观察进程与负载:top/htop
- 必要时手动回收页面缓存(仅在排查时临时使用):
- 仅清理页缓存:echo 1 | sudo tee /proc/sys/vm/drop_caches
- 清理 slab(含 dentry/inode):echo 2 | sudo tee /proc/sys/vm/drop_caches
- 清理页缓存与 slab:echo 3 | sudo tee /proc/sys/vm/drop_caches
- 注意:写入 drop_caches 前先执行 sync,避免脏页未落盘;该操作会引发短时 IO 升高,且仅为诊断手段,生产环境不建议频繁使用。
- 磁盘类缓存/空间:表现为 No space left on device、更新/安装失败、日志/包缓存占满磁盘。用以下命令定位:
- 查看磁盘:df -h
- 定位大目录:du -sh /var/ | sort -h*、du -sh /tmp/ | sort -h*
- 查找被删除但仍被占用的文件句柄:lsof | grep deleted
- 检查日志体量:du -sh /var/log/ | sort -h*
- 如为容器环境:docker system df
- 文件系统异常时可离线检查:fsck /dev/sdXN(需卸载或在救援/单用户模式执行)
二、常见症状与对应排查路径
- 症状 A:内存几乎耗尽、top/htop 中 buff/cache 很高、系统卡顿
- 判定要点:available 很低但 free 很小、buff/cache 很大属 Linux 正常文件缓存行为;真正压力来自应用常驻内存或缓存泄漏。
- 排查步骤:
- 用 top/htop 按内存排序,识别异常进程(如 RES 持续飙升)
- 临时回收缓存对比差异(见上),确认是否缓解卡顿
- 若回收后很快又升高,多为应用行为或内存泄漏,需优化应用/限制内存
- 症状 B:更新/安装报空间不足或速度异常
- 判定要点:/var/cache/apt/archives 或日志目录膨胀
- 排查步骤:
- 清理 APT 缓存:sudo apt clean & & sudo apt autoclean & & sudo apt autoremove
- 检查日志与临时目录体量,清理无用文件
- 检查 /var/lib/dpkg/lock*、/var/cache/apt/archives/lock* 等锁文件是否残留并清理
- 核对软件源配置 /etc/apt/sources.list 与网络连通性,必要时更换镜像源后 sudo apt update
- 症状 C:Nautilus/文件管理器卡死、桌面响应慢
- 判定要点:桌面索引器占用高或索引异常
- 排查步骤:
- 重置跟踪器索引:tracker reset -r(必要时 tracker reset -e)
- 症状 D:编译/解压/大文件拷贝后 IO 飙高、系统响应变慢
- 判定要点:IO 密集导致 page cache 迅速增长,内核会在内存紧张时回收
- 排查步骤:
- 观察 vmstat 1 或 iostat -x 1 的 wa% 与 r/s/w/s
- 仅在必要时临时回收缓存,避免频繁清理影响性能
三、安全清理与修复操作清单
- 内存侧(仅在排查/应急时临时使用)
- 同步落盘并回收:sync & & echo 3 | sudo tee /proc/sys/vm/drop_caches
- 观察 free -h 与 top/htop 的变化,确认是否缓解
- 磁盘侧
- APT 缓存:sudo apt clean & & sudo apt autoclean & & sudo apt autoremove
- 临时文件:sudo du -sh /tmp/ | sort -h*,清理不再需要的临时文件
- 日志与包缓存:检查 /var/log/、/var/cache/ 体量,删除无用旧日志与旧包
- 被删除但占用句柄:lsof | grep deleted,重启相关进程释放空间
- 容器:docker system prune -af(谨慎,会删除未使用镜像/容器/网络)
- 文件系统:离线执行 fsck /dev/sdXN(务必先备份与卸载)
- 桌面与索引
- 重置 tracker:tracker reset -r;必要时 tracker reset -e
- 软件源与网络
- 核对 /etc/apt/sources.list,更换为可用镜像源后 sudo apt update
- 如存在代理环境,配置 http_proxy/https_proxy 或排查网络连通性
四、预防与优化建议
- 理解机制:buff/cache 是 Linux 为提升性能而利用空闲内存的文件缓存,在内存紧张时会自动回收;无需为“占用高”本身而紧张,更应关注 available 与是否有进程异常吃内存。
- 建立例行维护
- 定期清理 APT 缓存与旧日志(如 logrotate 策略)
- 监控大目录与容器层占用,设置告警阈值
- 运行期优化
- 避免无限制缓存大对象;为关键业务设计合适的缓存策略与失效机制
- 在高峰期前做“缓存预热”,避免雪崩与穿透
- 变更控制
- 清理/回收操作尽量在维护窗口进行,变更前备份关键数据与配置
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu缓存故障怎么排查
本文地址: https://pptw.com/jishu/761586.html
