centos缓存故障怎么排查
导读:CentOS 缓存故障排查与处置 一 明确缓存类型与症状 常见缓存类型与典型症状如下: 缓存类型 典型症状 快速定位命令 Page Cache / Buffer Cache 内存占用高但业务无明显异常,偶发写入延迟 fre...
CentOS 缓存故障排查与处置
一 明确缓存类型与症状
- 常见缓存类型与典型症状如下:
| 缓存类型 | 典型症状 | 快速定位命令 |
|---|---|---|
| Page Cache / Buffer Cache | 内存占用高但业务无明显异常,偶发写入延迟 | free -h、vmstat 1、cat /proc/meminfo |
| 文件系统脏页 | 同步/关机慢、iowait 高 | vmstat 1、iostat -x 1、cat /proc/vmstat |
| DNS 解析缓存 | 域名解析偶发失败或返回旧记录 | dig example.com +short、nslookup example.com、systemd-resolve --statistics |
| YUM/DNF 元数据缓存 | yum/dnf makecache 失败、更新报错 |
yum clean all、dnf clean all、dnf makecache |
| 应用层缓存 | 页面/接口数据不一致、命中率下降 | redis-cli info、memcached-tool localhost:11211 stats |
- 先判断是内存/磁盘 I/O 压力还是名称解析/软件源/应用层问题,再进入对应分支排查。
二 系统级 Page Cache 与脏页排查
- 观察内存与缓存概况:
free -h、vmstat 1、cat /proc/meminfo | egrep 'MemAvailable|Dirty|Writeback'。若 available 充足而 buff/cache 高,多为正常现象;若 si/so 或 wa 升高,说明内存或 I/O 压力增大。 - 检查磁盘与 I/O:
iostat -x 1、df -h、du -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 +short、nslookup 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 status、sudo timedatectl set-ntp true,时间漂移会导致仓库元数据校验失败。
- 清理并重拉:
四 应用层缓存排查
- Redis:
redis-cli ping、redis-cli info(关注keyspace_hits/misses、used_memory、evicted_keys) - Memcached:
echo "stats" | nc localhost 11211或memcached-tool localhost:11211 stats(关注get_hits、get_misses、evictions) - Web/反向代理(Nginx/Apache):
sudo systemctl reload nginx、sudo systemctl reload httpd,并查看应用与反向代理日志(如 /var/log/ 下的服务日志)确认是否命中率下降或后端异常。
五 日志与系统状态交叉验证
- 系统日志与资源:
journalctl -xe、tail -f /var/log/messages /var/log/secure,配合top/htop、ps aux --sort=-%mem找出异常进程。 - 网络连通性:
ping -c 4 8.8.8.8、mtr -r example.com、ss -lntp | grep :80,排除因网络抖动/丢包导致的“缓存一致性”错觉。 - 文件系统异常:若怀疑缓存引发一致性问题,先
sync,再检查dmesg -T | tail、/var/log/messages中的 I/O 错误;必要时对关键目录执行lsof | grep deleted排查被删除但仍被占用的文件句柄。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos缓存故障怎么排查
本文地址: https://pptw.com/jishu/782917.html
