[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张图片
    图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张图片
图2 写入的item大于最大的chunk size(1MB)
为什么单个item的大小被限制在1M字节之内?

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

你可能感兴趣的:([Memcached] MC不能写入超过1M项实践)