温馨提示×

centos缓存怎么排查

小樊
42
2026-10-23 06:19:44
栏目: 智能运维

在 CentOS(以及多数 Linux 发行版)里,“缓存”通常指 系统内存缓存(Page Cache / Buffer)、DNS 缓存、YUM/DNF 缓存、应用层缓存(如 Nginx、Redis) 等。下面按常见场景给你一套排查思路和命令。


一、系统内存缓存(最常见)

1. 查看内存和缓存占用

free -h

或

top

关注:

  • buff/cache:系统缓存
  • available:真正可用内存

2. 查看详细内存使用

cat /proc/meminfo

重点关注:

  • Cached
  • Buffers
  • Dirty(未写回磁盘的缓存)

3. 谁在用缓存(文件级)

lsof | grep deleted

可发现“已删除但仍被进程占用”的文件。

4. 查看哪些文件占用了 Page Cache(进阶)

sudo yum install -y f_incore  # 或自行使用 vmtouch
vmtouch -v /path

5. 手动释放缓存(排查/临时处理)

sync
echo 3 > /proc/sys/vm/drop_caches

⚠️ 生产环境慎用,会影响性能。


二、DNS 缓存排查

1. 是否启用 DNS 缓存

CentOS 7/8 常见:

  • systemd-resolved
  • dnsmasq
  • nscd

查看:

ps aux | grep -E "systemd-resolved|dnsmasq|nscd"

2. 清理 DNS 缓存

# systemd-resolved
systemd-resolve --flush-caches

# nscd
nscd -i hosts

# dnsmasq
systemctl restart dnsmasq

三、YUM / DNF 缓存

1. 查看缓存目录

ls /var/cache/yum
# 或
ls /var/cache/dnf

2. 清理缓存

yum clean all
# 或
dnf clean all

四、应用层缓存(常见服务)

Nginx

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=xxx:10m;

清理:

rm -rf /var/cache/nginx/*

Redis

redis-cli
> info memory
> keys *
> flushall   # 慎用

五、磁盘 I/O 与缓存写入问题

1. 查看脏页写回

cat /proc/sys/vm/dirty_ratio
cat /proc/sys/vm/dirty_background_ratio

2. 查看 I/O 等待

iostat -x 1

高 %util + 高 await 常与缓存写回有关。


六、快速排查思路总结

  1. 内存异常?
    • free -h → buff/cache
  2. 服务变慢?
    • 查 DNS / 代理 / 应用缓存
  3. 磁盘写满?
    • 查 YUM / 日志 / 应用缓存
  4. 删了文件空间不释放?
    • lsof | grep deleted

如果你能具体说一下:

  • CentOS 版本(7 / 8 / Stream)
  • 遇到什么问题(内存高?网站慢?磁盘满?)

我可以给你更精准的排查命令。

0 踩