码迷,mamicode.com
首页 > 其他好文 > 详细

Redis: OOM command not allowed when used memory > ‘maxmemory’

时间:2016-12-17 22:16:34      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:通过   vol   volatile   lru算法   tor   异常   sed   允许   use   

现象

日志里出现异常:

OOM command not allowed when used memory > maxmemory

原因

内存已满,不允许再存数据了,可以通过redis-cli 查看redis的具体信息

127.0.0.1:6379> info memory
# Memory
used_memory:4120248
used_memory_human:3.93M
used_memory_rss:11509760
used_memory_peak:1977983104
used_memory_peak_human:1.84G
used_memory_lua:36864
mem_fragmentation_ratio:2.79
mem_allocator:jemalloc-3.6.0

注:

  • used_memory_human表示已用内存
  • used_memory_rss表示系统给redis分配的内存(即常驻内存)
  • mem_fragmentation_ratio=used_memory_rss/used_memory比例,一般情况下,used_memory_rss略高于used_memory,当内存碎片较多时,则mem_fragmentation_ratio会较大,可以反映内存碎片是否很多

解决

注:如修改了配置文件需重启redis

1. 增加redis内存,修改redis.conf

maxmemory 2gb

2. 修改redis存储策略

默认的redis设置是非常保守的,即内存超限后就不在存储,可以把策略修改为LRU算法(最近最少使用算法)——新存储的信息会替换掉旧的信息,从而不会是内存越线,修改redis.conf

maxmemory-policy volatile-lru

3. 少往reids存数据

是否有必要把这么多数据存入redis?

 

Redis: OOM command not allowed when used memory > ‘maxmemory’

标签:通过   vol   volatile   lru算法   tor   异常   sed   允许   use   

原文地址:http://www.cnblogs.com/kaituorensheng/p/6187044.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!