【发布时间】: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
-
抱歉,一直很忙,反应慢。。另一个问题:这个过程是什么时候开始的?它是否已经运行了数小时、数天、数周等?