为什么 memcached 占用的内存比其配置中指定的多得多

为什么 memcached 占用的内存比其配置中指定的多得多

我在 memcached 配置中将项目大小设置为 128M,将最大内存设置为 1024M。但是当我运行此命令时:

ps -eo pmem,pcpu,vsize,pid,cmd | sort -k 1 -nr | head -5

我明白了

71.7  0.0 3072592 4537 /usr/bin/memcached -vv -m 1024 -p 11211 -u memcache -l 0.0.0.0 -I 128M

这表明 memcached 占用了 3GB 内存。现在我明白了,当我们将项目大小设置为大于 1MB 时,memcached 的内存消耗会增加。但是,当你将最大内存设置为 1GB 时,3GB 似乎太多了。

总是这样还是我做错了什么?有没有办法减少内存消耗?

注意:虽然我当前存储在 memcached 中的键只有 1MB 多一点,但这些键的大小一直在不断增加,因此为了将来的安全,我已将项目大小设置为最大!

答案1

vsize不是表示该进程占用了多少内存。该数字由 给出rss

常驻集大小(或rss)表示进程实际使用的内存量。而总 VM 大小(此处vsize)表示正在使用的总地址空间是多少。理论上,程序最终可以使用那么多 RAM,但大多数地址空间都被分配但未使用的内存、由于不需要而未从磁盘加载的库部分等所使用。

实际上,vsize除非您使用的是 32 位系统,否则您可以忽略,在该系统中任何进程的最大可能地址空间为 4GiB(即使该进程使用的 RAM 量要少得多)。

相关内容