首页/数据/Redis 进阶速查/used_memory 与 rss 为何不一致
内存与管理99 条

used_memory 与 rss 为何不一致

used_memory 是 Redis 自己统计的分配量,rss 是操作系统实际映射的物理内存;分配器碎片、未归还页、THP 与 fork 拷贝都会让两者出现差距。

Redis 进阶速查数据更新于 2026-10-13

两个内存数字为什么不同

实例报告的内存占用与操作系统看到的物理内存经常对不上,原因主要有几类:分配器没有把释放的内存归还给系统,于是留下碎片;进程内存被换到了交换分区,物理占用低于报告值;写时复制与内存整理期间还会出现额外的页。判断方法很直接:报告值明显低于物理占用,通常意味着碎片或额外复制页;物理占用明显低于报告值,则要警惕内存被换出。

基本信息

报告口径实例自己统计的分配器占用
系统口径操作系统看到的进程常驻物理内存
对比方式两个数字直接相减并看比值
常见差异源碎片、未归还页、换页、写时复制
判断依据差值方向决定排查线索

典型使用场景

  • 物理内存持续高于报告值,评估是否需要做内存整理或滚动重启
  • 系统内存紧张时排查实例是否被换出,确认延迟变差的根因
  • 容器环境核对 cgroup 统计与实例自身的口径差异
  • 容量规划时为碎片留出余量,避免按报告值直接申请规格
  • 大实例快照后内存长时间不回落,判断是否为未归还页

对比查看

对比查看
redis-cli INFO memory | grep -E 'used_memory:|used_memory_rss|mem_fragmentation_ratio'
ps -o pid,rss,vsz,cmd -p $(pgrep -d, redis-server)   # 进程级物理内存
cat /proc/$(pgrep -o redis-server)/status | grep -E 'VmRSS|VmSwap'  # 换出情况
free -h                                              # 系统整体内存与交换分区

差异方向与处置

现象主要原因处置方向
物理占用明显高于报告值内存碎片或快照复制页未归还观察碎片率,必要时滚动重启
物理占用明显低于报告值内存被换出到交换分区检查系统内存,避免换页
比值长期偏高分配器不归还内存评估内存整理与重启节奏
容器内口径差异大cgroup 统计与实例口径不同以容器监控与实例指标相互印证
物理占用低于报告值时先查交换分区,这是延迟突然变差的常见原因,不要把内存被换出误当成内存还有很多余量。
容器环境里两个口径还受 cgroup 统计方式影响,核对时要明确比较的是容器视角还是宿主机视角,否则结论会自相矛盾。

易错点

  • 看到物理占用低于报告值就认为内存充裕,实际数据已被换出,延迟正在恶化
  • 按报告值申请容器内存规格,忽略碎片开销,快照期间被系统杀掉
  • 把两个口径的差异一律归为内存泄漏,花大量时间追查并不存在的泄漏
  • 在宿主机与容器视角之间混用指标做对比,得出互相矛盾的结论

数据来源与参考

  • Redis 官方文档:内存优化与 rss 说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌