【问题标题】:Redis using high memory with small data setRedis 使用高内存和小数据集
【发布时间】:2012-08-18 02:44:53
【问题描述】:

我正在运行 redis-server,根据prstat 它正在使用 3721M 的内存。当我在 redis-cli 中运行 info 时,我得到了这个内存:

used_memory:8739028 
used_memory_human:8.33M
used_memory_rss:8739028
mem_fragmentation_ratio:1.00

这是在一个 2GB 的云实例上运行的,所以我的内存利用率总是结束。但是,即使我在 redis 上 flushall 时,它似乎也不会影响内存消耗。

这是否适用于可能正在分配内存的设置或任何想法为什么 redis 对我的实际数据使用这么多?

谢谢!

编辑:

另外补充一下,我在另一个实例上运行相同的设置(应用程序/redis),内存消耗仅为 554M,数据为used_memory_human:5.68M

来自 pmap 的响应:

[root@]# pmap -x 27425

27425:  /opt/local/bin/redis-server /opt/local/etc/redis.conf
 Address  Kbytes     RSS    Anon  Locked Mode   Mapped File
08046000       8       8       8       - rw---    [ stack ]
08050000     208     160       -       - r-x--  redis-server
08093000       8       8       4       - rwx--  redis-server
08095000 3807836 3804160 3764928       - rwx--    [ heap ]
FE9BD000      12      12       -       - r-x--  libpthread.so.1
FEAF0000     456     456       -       - r-x--  libnsl.so.1
FEB72000       8       8       4       - rw---  libnsl.so.1
FEB74000      20      16       4       - rw---  libnsl.so.1
FEBA0000     304     304       -       - r-x--  libm.so.2
FEBFB000      16      16       -       - rwx--  libm.so.2
FEDA0000       4       4       -       - r--s-  dev:531,392 ino:3736139179
FEDB0000       4       4       -       - rwxs-    [ anon ]
FEDC0000      24      12       8       - rwx--    [ anon ]
FEDD0000       4       4       4       - rwx--    [ anon ]
FEDE0000    1216    1216       -       - r-x--  libc.so.1
FEF10000      36      36      24       - rwx--  libc.so.1
FEF19000       8       8       4       - rwx--  libc.so.1
FEF20000       4       4       4       - rwx--    [ anon ]
FEF30000      56      56       -       - r-x--  libsocket.so.1
FEF4E000       4       4       -       - rw---  libsocket.so.1
FEF50000       4       4       4       - rwx--    [ anon ]
FEF60000       4       4       -       - r-x--  libdl.so.1
FEF70000       4       4       -       - r--s-  ld.config
FEF80000       4       4       4       - rw---    [ anon ]
FEF90000       4       -       -       - rw---    [ anon ]
FEFA0000       4       4       4       - rwx--    [ anon ]
FEFB0000       4       4       -       - rwx--    [ anon ]
FEFB7000     208     208       -       - r-x--  ld.so.1
FEFFB000       8       8       4       - rwx--  ld.so.1
FEFFD000       4       4       -       - rwx--  ld.so.1

配置中没有启用限制,这里是虚拟内存和高级:

VIRTUAL MEMORY
vm-enabled no
vm-swap-file /tmp/redis.swap
vm-max-memory 0
vm-page-size 32
vm-pages 134217728
vm-max-threads 4


ADVANCED CONFIG
hash-max-zipmap-entries 512
hash-max-zipmap-value 64

【问题讨论】:

  • 什么版本的 Redis?你和谁一起主持?你自己安装了 Redis 吗?你的 redis.conf 是什么样的?可能会让我们更接近弄清楚发生了什么。
  • @j.w.r,Redis 版本 2.2.2,由 Joyent 托管,我自己安装了 redis。我应该粘贴整个配置还是要发布任何特定项目?
  • 配置的“限制”、“虚拟内存”(如果存在)和“高级”部分应该没问题。另外,prstat 的 SIZE 和 RSS 值是多少? 3721M 数字听起来像 SIZE,其中包括 VM/共享内存/内存映射文件,可能会产生误导,RSS 通常是我看的。尝试运行 pmap -x PID-of-redis 并发布输出的内容。
  • @j.w.r,谢谢你刚刚更新了 pmap 的结果。从prstat,SIZE是3721M,RSS是3716M
  • 抱歉,一直很忙,反应慢。。另一个问题:这个过程是什么时候开始的?它是否已经运行了数小时、数天、数周等?

标签: database redis


【解决方案1】:

问题有点老了,但我以前遇到过这个问题。如果我没记错的话,我关闭了我的 redis 实例,删除了 RDB 文件(如果适用)并重新启动了 redis。 如果不想删除 RDB 文件,因为它包含你需要的数据,我不推荐这样做。 你可以尝试DEL 尽你所能,然后做一个SAVE(我相信redis 在关闭时会执行SAVE,因此可能是多余的)然后重新启动。

如果你还没有升级 redis 到最新的稳定版,那将是个好时机。

【讨论】:

    猜你喜欢
    • 2020-03-06
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    • 2011-06-11
    • 2016-10-21
    • 2012-10-24
    • 2012-04-17
    • 2018-04-12
    相关资源
    最近更新 更多