qmya00 发表于 2017-12-22 06:03:37

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

现象
  日志里出现异常:
  

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?
页: [1]
查看完整版本: Redis: OOM command not allowed when used memory > ‘maxmemory’