MC通过Slab Allocation分配内存使用,以Page分配Slab和Chunk,最大的Chunk size是Page的大小1M,如果写入的item大于最大的chunk size,MC如何处理?
-
启动MC每个Page 1MB, growth factor=1.25,Slab Allocation如图1所示,最大的Chunk Size=1048576 Bytes=1MB。
图1 growth factor=1.25的Slab Allocation - 当写入的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中。
网友评论