Gor*_*don 12
15.5.5.4:可以在memcache中存储的对象的最大大小是多少?
默认的最大对象大小为1MB.在memcached 1.4.2及更高版本中,您可以使用-I命令行选项更改对象的最大大小.
对于之前的版本,要增加此大小,您必须重新编译memcached.您可以在源中的slabs.c文件中修改POWER_BLOCK的值.
在memcached 1.4.2及更高版本中,您可以使用-I命令行选项配置支持的最大对象大小.例如,要将最大对象大小增加到5MB:
Run Code Online (Sandbox Code Playgroud)$ memcached -I 5m
然而,即使增加内存,这也不是IMO的好选择.更好的想法是将对象分成更小的部分,然后缓存它的单个部分.
简短回答:因为内存分配器的算法如何工作.
答案很长:Memcached的内存存储引擎(将来可插拔/调整......)使用slab方法进行内存管理.存储器被分解成不同大小的块状块,从最小数量开始并以阶乘方式上升到最大可能值.
假设最小值为400字节,最大值为1兆字节,因子为1.20:
slab 1 - 400 bytes slab 2 - 480 bytes bytes slab 3 - 576 bytes ...等
板坯越大,它与前一块板坯之间的间隙就越大.因此,最大值越大,存储器存储的效率越低.Memcached还必须为每个存在的slab预分配一些内存,因此设置一个较小的factor并使用较大的max值将需要更多的开销.
还有其他原因你不想这样做......如果我们谈论的是一个网页而你试图存储/加载大的值,你可能做错了.在这个大小的情况下,将数据结构加载和解压缩到内存中需要花费相当多的时间,并且您的站点可能无法很好地执行.
如果您确实想要存储大于1MB的项目,可以使用已编辑的slabs.c:POWER_BLOCK值重新编译memcached,或使用低效的malloc/free后端.其他建议包括数据库,MogileFS等.
| 归档时间: |
|
| 查看次数: |
3513 次 |
| 最近记录: |