温馨提示×

centos缓存故障怎么排查

小樊
34
2025-12-29 02:23:24
栏目: 智能运维

CentOS 缓存故障排查与处置

一 明确缓存类型与症状

  • 常见缓存类型与典型症状如下:
缓存类型 典型症状 快速定位命令
Page Cache / Buffer Cache 内存占用高但业务无明显异常,偶发写入延迟 free -hvmstat 1cat /proc/meminfo
文件系统脏页 同步/关机慢、iowait 高 vmstat 1iostat -x 1cat /proc/vmstat
DNS 解析缓存 域名解析偶发失败或返回旧记录 dig example.com +shortnslookup example.comsystemd-resolve --statistics
YUM/DNF 元数据缓存 yum/dnf makecache 失败、更新报错 yum clean alldnf clean alldnf makecache
应用层缓存 页面/接口数据不一致、命中率下降 redis-cli infomemcached-tool localhost:11211 stats
  • 先判断是内存/磁盘 I/O 压力还是名称解析/软件源/应用层问题,再进入对应分支排查。

二 系统级 Page Cache 与脏页排查

  • 观察内存与缓存概况:free -hvmstat 1cat /proc/meminfo | egrep 'MemAvailable|Dirty|Writeback'。若 available 充足而 buff/cache 高,多为正常现象;若 si/sowa 升高,说明内存或 I/O 压力增大。
  • 检查磁盘与 I/O:iostat -x 1df -hdu -sh /var/* | sort -hr | head,定位是否因日志/数据占满磁盘或 I/O 瓶颈导致“缓存回写慢”。
  • 查看脏页与回写参数:cat /proc/vmstat | egrep 'nr_dirty|nr_writeback';必要时调整内核参数(示例值,需结合业务验证):
    • vm.dirty_background_ratio(默认约10):后台回写阈值(占可用内存百分比)
    • vm.dirty_ratio(默认约20):前台阻塞回写阈值
    • vm.vfs_cache_pressure(默认100):控制 inode/dentry 回收倾向,适当降低可保留更多目录项缓存
  • 临时缓解(仅在必要时使用,避免频繁清理):先 sync 再写入 echo 3 > /proc/sys/vm/drop_caches(取值:1 页缓存,2 dentry/inode,3 全部)。注意:清理会增大磁盘读负载、影响短时性能。

三 名称解析与软件源缓存排查

  • DNS 缓存:
    • 查看解析:dig example.com +shortnslookup example.com
    • 刷新缓存:sudo systemd-resolve --flush-caches(若使用 systemd-resolved);如使用 nscd,执行 sudo systemctl restart nscd
  • YUM/DNF 元数据缓存(常见于 Failed to synchronize cache for repo 'AppStream'):
    • 清理并重拉:sudo dnf clean all && sudo dnf makecache(或 yum clean all && yum makecache
    • CentOS 8 EOL 场景:将镜像切换到 vault.centos.org
      • sudo sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
      • sudo sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
      • 再执行 sudo dnf makecache
    • 同步时间:timedatectl statussudo timedatectl set-ntp true,时间漂移会导致仓库元数据校验失败。

四 应用层缓存排查

  • Redis:redis-cli pingredis-cli info(关注 keyspace_hits/missesused_memoryevicted_keys
  • Memcached:echo "stats" | nc localhost 11211memcached-tool localhost:11211 stats(关注 get_hitsget_missesevictions
  • Web/反向代理(Nginx/Apache):sudo systemctl reload nginxsudo systemctl reload httpd,并查看应用与反向代理日志(如 /var/log/ 下的服务日志)确认是否命中率下降或后端异常。

五 日志与系统状态交叉验证

  • 系统日志与资源:journalctl -xetail -f /var/log/messages /var/log/secure,配合 top/htopps aux --sort=-%mem 找出异常进程。
  • 网络连通性:ping -c 4 8.8.8.8mtr -r example.comss -lntp | grep :80,排除因网络抖动/丢包导致的“缓存一致性”错觉。
  • 文件系统异常:若怀疑缓存引发一致性问题,先 sync,再检查 dmesg -T | tail/var/log/messages 中的 I/O 错误;必要时对关键目录执行 lsof | grep deleted 排查被删除但仍被占用的文件句柄。

0