[Memcached] MC不能写入超过1M项实践

MC通过Slab Allocation分配内存使用,以Page分配Slab和Chunk,最大的Chunk size是Page的大小1M,如果写入的item大于最大的chunk size,MC如何处理?

  1. 启动MC每个Page 1MB, growth factor=1.25,Slab Allocation如图1所示,最大的Chunk Size=1048576 Bytes=1MB。


    图1 growth factor=1.25的Slab Allocation
  2. 当写入的item大于最大的chunk size(1MB)时,如图2,提示SERVER_ERROR object too large for cache,写入的item不能超过Page大小。对于超过1MB的item,拆分成多个小对象存放。
set map1 3 0 1007571   // 1007571小于chunk size 1MB,可以写入到Slab chunk中
<29 set map2 3 0 1062302   // 1062302大于chunk size 1MB,不可以写入到Slab chunk中
>29 SERVER_ERROR object too large for cache
图2 写入的item大于最大的chunk size(1MB)
为什么单个item的大小被限制在1M字节之内?

因为Slab Allocation的最大chunk Size是1M字节,每个item都要写入到Slab Chunk中。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容