Redis删除数据后内存不释放解决方法
Redis 大约 1367 字查看内存占用
info memory
输出
127.0.0.1:6379> info memory
# Memory
used_memory:3220899496
used_memory_human:3.00G
used_memory_rss:3304706048
used_memory_rss_human:3.08G
used_memory_peak:3221246176
used_memory_peak_human:3.00G
total_system_memory:33625522176
total_system_memory_human:31.32G
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:3221225472
maxmemory_human:3.00G
maxmemory_policy:volatile-lru
mem_fragmentation_ratio:6.03
mem_allocator:jemalloc-4.0.3
字段解释
used_memory_human
:数据占用的内存used_memory_rss_human
:Redis
占用的内存used_memory_peak_human
:占用内存的峰值mem_fragmentation_ratio
:内存碎片率
mem_fragmentation_ratio
mem_fragmentation_ratio
= used_memory_rss
/ used_memory
越低越高,趋向于1,大于1的部分redis碎片占用的大小。范围在1 - 1.5,大于1.5说明碎片过多,必须要清理了。
解决方法
内存碎片过多解决方法需根据Redis
版本来定。
Redis4.0之前
只能重启Redis
服务。
Redis4.0之后
方法一:开启activedefrag
,自动清理内存碎片,默认没有开启,但线上会影响性能。
命令行中设置config set activedefrag yes
。
或在配置文件中修改配置:
# 开启自动内存碎片整理(总开关)
activedefrag yes
# 当碎片达到 100mb 时,开启内存碎片整理
active-defrag-ignore-bytes 100mb
# 当碎片超过 10% 时,开启内存碎片整理
active-defrag-threshold-lower 10
# 内存碎片超过 100%,则尽最大努力整理
active-defrag-threshold-upper 100
# 内存自动整理占用资源最小百分比
active-defrag-cycle-min 25
# 内存自动整理占用资源最大百分比
active-defrag-cycle-max 75
方法二:memory purge
命令,手动清理内存碎片,以一个I/O
事件的形式注册到主线程
当中去执行。
只能适用于jemalloc
内存分配器。
memory purge
的效果相比于activedefrag
并没有很大差别。
建议根据实际情况与activedefrag
配合使用。
文档
阅读 2837 · 发布于 2020-10-22
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看
换一批
-
pgAdmin4 设置以本地客户端方式打开,不在浏览器中打开阅读 8313
-
IDEA 在工程目录中高亮显示包含了改动过的文件的文件夹阅读 1234
-
VMware Workstation 与 Hyper-V不 兼容阅读 3703
-
CSS 网页变灰效果阅读 1670
-
GoJS 自定义圆角矩形阅读 1438
-
Java 判断后缀是否匹配规则阅读 1455
-
Java 删除非空文件夹阅读 1160
-
软考-系统架构设计师:规范化理论-价值与用途阅读 1931
-
java.sql.SQLException: ORA-01000: maximum open cursors exceeded阅读 1810
-
Nginx 负载均衡 WebSocket 请求阅读 1706