memcached块限制

Memcached chunk limit

来源: link 标签:membership 更新时间:

  问题

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

  最佳答案

this question in official FAQ

我可能在memcached中遇到什么限制? (Wayback Machine)

引用:

您可能会看到 memcache 的简单限制是关键, 项目大小限制.键限制为250个字符.存储数据 不能超过1兆字节,因为这是最大的典型 页:1

FAQ现在已经修订,现在有两个单独的问题涉及:

什么是maxium键长度? (250字节)

密钥的最大大大小是 250 个字符。 减去使用客户机“前缀”或类似的功能,因为 前缀被贴在原始密钥的前面。 一般来说更好,因为它们保存内存并使用较少的带宽。

为什么项目限制为1兆字节大小?

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

简短答案:因为内存分配器的算法是如何工作的。

long – Long answer:memcached的内存存存储引擎(将是 javascript – pluggable /调整后的未来...),使用板法进行内存处理 管理。内存被分解成不同大小的板块, 从最小数字开始,由阶乘提升到 最大值。

假设最小值是400字节,最大值是1 Megabyte,而阶乘是1.20:

板1 - 400字节板2 - 480字节板3 - 576字节等。

板块越大,板块和板块之间的差距越大 所以最大值越大 内存存存储是. memcached还必须预先分配一些内存 所以设置一个更小的阶乘 最大值需要更多的开销。

还有其他原因你不想这样做... 谈论一个网页,你试图存储/加载值 那么大,你可能做错了什么。 需要大量的时间来加载和解压数据结构 进入内存,你的网站很可能表现不好。

如果你真的想要存储大于1MB的物品,你可以 ruby-on-rails – 使用编辑的slabs.c:POWER_BLOCK值重新编译memcached,或使用 低效的malloc / free 后端.其他建议包括 数据库、模板等。

  相同标签的其他问题

membership