Memcached块限制

时间:2008-08-07 21:31:59

标签: membership

为什么在memcached中存在硬编码的块限制(压缩后的.5 meg)?有没有人重新编译过它们?我知道我不应该像这样发送大块的东西,但这些特别重的块不时发生在我身上并造成严重破坏。

1 个答案:

答案 0 :(得分:4)

此问题曾出现在official FAQ

What are some limits in memcached I might hit? (Wayback Machine)

引用:

  

使用memcache可能会看到的简单限制是关键和   项目大小限制。密钥限制为250个字符。存储数据   不能超过1兆字节,因为这是最大的典型   板坯尺寸。“

常见问题解答已经修订,现在有两个单独的问题涉及:

What is the maxiumum key length? (250 bytes)

  

密钥的最大大小为250个字符。注意这个值是   如果你使用客户端“前缀”或类似的功能,因为   前缀被固定在原始键的前面。更短的钥匙是   通常更好,因为它们节省了内存并使用更少的带宽。

Why are items limited to 1 megabyte in size?

  

啊,这是一个很受欢迎的问题!

     

简短回答:由于内存分配器的算法如何工作。

     

答案很长:Memcached的内存存储引擎(将会是   可插拔/未来调整...),使用平板方法记忆   管理。内存被分解成不同大小的平板块,   从最小数字开始,然后通过因子上升到   最大可能值。

     

假设最小值为400字节,最大值为1   兆字节,因子是1.20:

     

slab 1 - 400字节slab 2 - 480字节slab 3 - 576 bytes ... etc。

     

板坯越大,它与板坯之间的间隙就越大   以前的板坯。所以最大值越大,效率越低   内存存储是。 Memcached还必须预先分配一些内存   存在的每一块板,因此设置较小的因子   最大值将需要更多的开销。

     

还有其他原因你不想这样做......如果我们这样做的话   谈论一个网页,你正在尝试存储/加载值   那么大,你可能做错了什么。那么大小   花费大量时间来加载和解压缩数据结构   进入记忆库,你的网站可能效果不佳。

     

如果你真的想存储大于1MB的物品,你可以   使用已编辑的slabs.c:POWER_BLOCK值重新编译memcached,或使用   低效的malloc /免费后端。其他建议包括a   数据库,MogileFS等