温馨提示×

centos缓存如何排查问题

小樊
41
2025-12-27 03:14:19
栏目: 智能运维

CentOS 缓存问题排查与定位

一、先明确缓存类型与影响

  • 区分两类问题:一类是内核页缓存/目录项/inode 缓存(影响内存与磁盘 I/O 表现),另一类是应用/包管理器/浏览器等用户态缓存(影响磁盘占用)。内核会利用空闲内存做文件系统缓存,通常可用内存(available)偏低但无 OOM属于正常现象;真正的内存压力要结合 free、vmstat、iostat 等综合判断。清理内核缓存仅用于定位,生产环境不建议频繁执行。

二、快速排查路径

  1. 资源与内核缓存概览
    • 查看内存与缓存:free -hvmstat 1、必要时 iostat -x 1;观察 availablebuff/cache、si/so、wa 等指标是否异常。
    • 查看内核缓存与脏页:cat /proc/vmstat(如 nr_dirty、nr_writeback)、必要时检查 /proc/sys/vm/dirty_ratio、dirty_background_ratio、vfs_cache_pressure 等参数。
  2. 磁盘占用与大目录
    • 看总体占用:df -h;定位大目录:du -sh /var /usr /opt /home 2>/dev/null | sort -hr | head,进一步进入子目录逐级排查。
  3. 已删除但仍占用空间的文件
    • 查被删除但仍被进程占用的句柄:lsof | grep deleted,必要时重启相关进程释放空间。
  4. 包管理器缓存
    • YUM/DNF 缓存位置:/var/cache/yum/var/cache/dnf。执行 yum clean alldnf clean all 后,仍可用 ls -l /var/cache/yum 检查是否残留;如有第三方源或自定义缓存路径,需逐一核对并清理。
  5. 日志与临时文件
    • 日志轮转与清理:journalctl --vacuum-time=7d;旧日志可结合 find /var/log -type f -name “*.log” -mtime +7 -delete 清理;临时文件:/tmp、/var/tmp
  6. 应用层缓存
    • 数据库/缓存/Web:如 Redis(redis-cli info)MySQL(系统表空间与临时表)Nginx/Apache(proxy_cache_path 等),按各自文档检查缓存命中、占用与淘汰策略。

三、常见症状与定位对照表

症状 优先检查 快速定位命令 处理要点
内存“不够用”但业务无明显 OOM 内核缓存与脏页 free -h、vmstat 1、cat /proc/vmstat 先确认是缓存导致;仅在定位时执行 sync && echo 3 > /proc/sys/vm/drop_caches
磁盘空间被占满 大目录与已删除占用 df -h、du -sh /var 等、lsof 清理无用大文件/镜像;对 lsof 列出的进程做优雅重启
yum/dnf 占用过大或清理不彻底 包缓存目录与配置 yum clean all、ls -l /var/cache/yum、grep -R cache /etc/yum.repos.d 核对第三方源与自定义缓存路径后手动清理
页面响应变慢且 I/O 升高 缓存命中与脏页回写 vmstat 1、iostat -x 1、cat /proc/vmstat 结合 dirty_ratio/background_ratio 与业务峰值评估是否需要调优

四、定位后的处理建议

  • 内核与 I/O 调优(仅在明确瓶颈时调整)
    • 适度调节 vm.dirty_ratio / dirty_background_ratio 控制脏页回写时机;提高 vm.vfs_cache_pressure 可更快回收目录项/inode 缓存(可能影响路径查找性能)。变更前在测试环境验证。
  • 清理操作规范
    • 清理内核页缓存前先执行 sync;仅在排障时执行 echo 1/2/3 > /proc/sys/vm/drop_caches,避免生产频繁清理导致性能抖动。
  • 包管理器与镜像
    • 例行执行 yum clean all / dnf clean all;若仍残留,检查 /var/cache/yum 与第三方源配置并手动清理;定期清理过期镜像与无用包。
  • 日志与临时文件
    • 启用并验证 logrotate 正常工作;按需执行 journalctl --vacuum-time=7d 或清理 /tmp /var/tmp 中过期文件,避免误删正在使用的临时文件。

0