zoukankan      html  css  js  c++  java
  • REDIS-内存OOM-LRU挤掉KEY

    问题描述:
    开发人员反应有一个redis从库,数据比其他集群中的数据少,导致应用出现问题。

    # Keyspace
    db0:keys=73,expires=5,avg_ttl=0 ----正常数据

    # Keyspace
    db0:keys=60,expires=5,avg_ttl=0 ----异常数据

    =============
    问题分析:
    ----------
    检查操作系统日志,没有发现问题。
    # cat /var/log/messages
    ----------
    检查redis日志,没有发现问题。
    $ tail -f redis_server_6379.log

    ----------
    检查配置文件,没有发现问题。
    cat /usr/local/redis/redis.conf

    ----------
    删除dump.rdb文件并重启redis,重置从库
    观察redis发现keys=73,但是2分钟以后下降到keys=60


    ----------
    监控redis运行命令,没有发现问题。
    # /usr/local/redis/bin/redis-cli -a xxx -h xxx -p xx monitor|grep -v "hget"

    ----------
    尝试写入一条数据
    set a a1
    报错OOM


    检查内存信息: info memory
    # Memory
    used_memory:5834791440 --由 Redis 分配器分配的内存总量
    used_memory_human:5.43G --使用的内存量。
    used_memory_rss:4738400256
    used_memory_rss_human:4.41G
    used_memory_peak:5836954968
    used_memory_peak_human:5.44G
    used_memory_peak_perc:99.96% --使用内存达到峰值内存的百分比
    used_memory_overhead:1075204528
    used_memory_startup:786664
    used_memory_dataset:4759586912 --数据占用的内存大小
    used_memory_dataset_perc:81.58% --数据占用的内存大小的百分比
    total_system_memory:16657612800
    total_system_memory_human:15.51G
    used_memory_lua:37888
    used_memory_lua_human:37.00K
    maxmemory:4294967296
    maxmemory_human:4.00G
    maxmemory_policy:noeviction
    mem_fragmentation_ratio:0.81

    观察到的现象:
    used_memory_dataset_perc 达到100% ,内存溢出
    redis内部算法,会删除一部分key,可以使用 monitor 命令观察到。

    当删除一部分key之后,db0:keys=60,used_memory_dataset_perc:81.58%
    redis状态趋于稳定。

    临时解决方法:
    注释掉最大内存限制:
    vim redis.conf
    #maxmemory 4294967296

    重启之后发现,
    db0:keys=73,expires=5,avg_ttl=0

    一切正常。

    检查内存信息: info memory
    # Memory
    used_memory:5834791440 --由 Redis 分配器分配的内存总量
    used_memory_human:5.43G --使用的内存量。

    内存使用量达到了5.43G

    最初给的内存最大值为4G,说明给的内存过小。
    确认问题为used_memory参数设置太小。应该把最大值调大。


    ----------
    注释掉used_memory存在的隐患:
    如果内存使用继续增大,os内存耗尽,操作系统可能变的不稳定。

  • 相关阅读:
    Spring spEL
    Spring 使用外部部署文件
    Spring 自动装配
    spring 属性配置细节
    hdu 1054 Strategic Game
    fzu 2037 Maximum Value Problem
    将博客搬至CSDN
    HDU 4714 Tree2Cycle
    HDU 1009 The Shortest Path in Nya Graph
    POJ 1942 Paths on a Grid 组合数的优化
  • 原文地址:https://www.cnblogs.com/monkeybron/p/11651530.html
Copyright © 2011-2022 走看看