【问题标题】:Redis - monitoring maximum memory before inserts fail?Redis - 在插入失败之前监控最大内存?
【发布时间】:2019-09-06 13:14:31
【问题描述】:

虽然this Q/A 没有解决以下实际问题:如何使用客户端(例如redis-py)检测redis 不是通过机器而是通过maxmem 配置耗尽内存限制?在插入失败之前,在程序中使用哪个命令来检测即将满?

我的第一个猜测是:info 并检查 used_memory_peak maxmem 是否设置。它是否正确?

(另外,由于机器内存不足,由于碎片整理,使用哪个设置,返回的INFO字段在这里没有帮助)

我应该尝试插入并查看是否失败(但那将是事后的事。)

【问题讨论】:

    标签: memory redis


    【解决方案1】:

    跟踪和错误,通过运行测试足够好
    while true; do redis-cli lpush mm longstringhere; done; 结果在maxmem - used_memory

    (错误)使用内存时不允许使用 OOM 命令 > 'maxmemory'。

    所以我设置了我通过 redis-py 客户端轮询它,一旦差异小于 1mb 阈值抛出,当然会引发错误。确保您最长命令的 user_memory 内存插件当然也是 我试图弄清楚如何计算已用内存的百分比,以便我更早地收到通知,例如 maxmem 的 90%,因此这个解决方案很好。

    信息转储:

    # Memory
    used_memory:3126272
    used_memory_human:2.98M
    used_memory_rss:5292032
    used_memory_rss_human:5.05M
    used_memory_peak:4914296
    used_memory_peak_human:4.69M
    used_memory_peak_perc:63.62%
    used_memory_overhead:696654...
    

    此外,maxmem 不是硬帽,当通过例如将成员添加到现有集合来进一步运行它时。

    used_memory:3162584
    used_memory_human:3.02M
    

    获取百分比 0-100 的代码

    rmem_info = pipe.info(section='memory')
    {'redis_mem_percent': math.ceil(rmem_info['used_memory'] / rmem_info['maxmemory'] *100)}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-25
      • 2017-12-03
      • 2013-01-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多