[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。

    《[Memcached] MC不能写入超过1M项实践》 图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

《[Memcached] MC不能写入超过1M项实践》 图2 写入的item大于最大的chunk size(1MB)

为什么单个item的大小被限制在1M字节之内?

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

    原文作者:大头8086
    原文地址: https://www.jianshu.com/p/077ef2f7a8af
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞