used_memory_rss(操作系统实际分配的内存)远大于used_memory(Redis实际使用的内存),导致内存碎片率(mem_fragmentation_ratio = used_memory_rss / used_memory)过高(通常>1.5)。repl-backlog-size)过大。maxmemory-policy导致内存不足时无法自动回收。 redis-cli INFO MEMORY | grep "mem_fragmentation_ratio"mem_fragmentation_ratio < 1:内存不足,可能触发Swap。1 < ratio < 1.5:正常范围。ratio > 1.5:内存碎片严重。 redis-cli CONFIG GET maxmemory-policy
redis-cli INFO stats | grep "expired_keys"volatile-lru、allkeys-lru等主动回收类型。expired_keys值过低可能表示定期删除未有效执行。ls -lh /var/lib/redis/dump.rdbredis-cli CONFIG GET appendonly
ls -lh /var/lib/redis/appendonly.aofBGREWRITEAOF重写AOF文件,清理旧RDB文件。redis-cli INFO clients | grep "connected_clients"
redis-cli CLIENT LIST | grep "obuf"config set client-output-buffer-limit 'normal 0 0 0'
config set client-output-buffer-limit 'slave 256mb 64mb 60'redis-cli INFO REPLICATIONrepl-backlog-size(默认1MB)以适应网络延迟。CLUSTER NODES检查数据分布,重新平衡分片。手动清理:redis-cli MEMORY PURGEconfig set activedefrag yes
config set active-defrag-threshold-lower 10
config set active-defrag-cycle-min 25
config set active-defrag-cycle-max 75config set maxmemory-policy volatile-lru
config set maxmemory-samples 100redis-cli BGREWRITEAOFconfig set maxclients 10000INFO MEMORY、INFO CLIENTS、INFO STATS持续跟踪内存、连接和淘汰状态。# 内存上限
config set maxmemory 2GB
# 淘汰策略
config set maxmemory-policy allkeys-lru
# 碎片清理
config set activedefrag yes通过上述步骤,可系统性解决Redis删除数据后内存占用高的问题,并预防类似情况再次发生。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。