- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Memcached内存模型分析
一、Memcache内存分配机制①:Page为内存分配的最小单位:? ? ? ?Memcached的内存分配以page为单位,默认情况下一个page是1M,可以通过-I参数在启动时指定。如果需要申请内存时,memcached会划分出一个新的page并分配给需要的slab区域。page一旦被分配在重启前不会被回收或者重新分配(page ressign已经从1.2.8版移除了)?②:Slabs划分数据空间:? ? ? Memcached并不是将所有大小的数据都放在一起的,而是预先将数据空间划分为一系列slabs,每个slab只负责一定范围内的数据存储。如下图,每个slab只存储大于其上一个slab的size并小于或者等于自己最大size的数据。例如:slab 3只存储大小介于137 到 224 bytes的数据。如果一个数据大小为230byte将被分配到slab 4中。从下图可以看出,每个slab负责的空间其实是不等的,memcached默认情况下下一个slab的最大值为前一个的1.25倍,这个可以通过修改-f参数来修改增长比例。③:Chunk才是存放缓存数据的单位:? ? ? ?Chunk是一系列固定的内存空间,这个大小就是管理它的slab的最大存放大小。例如:slab 1的所有chunk都是104byte,而slab 4的所有chunk都是280byte。chunk是memcached实际存放缓存数据的地方,因为chunk的大小固定为slab能够存放的最大值,所以所有分配给当前slab的数据都可以被chunk存下。如果时间的数据大小小于chunk的大小,空余的空间将会被闲置,这个是为了防止内存碎片而设计的。例如下图,chunk size是224byte,而存储的数据只有200byte,剩下的24byte将被闲置。④:Slab的内存分配:? ? ? ?Memcached在启动时通过-m指定最大使用内存,但是这个不会一启动就占用,是随着需要逐步分配给各slab的。如果一个新的缓存数据要被存放,memcached首先选择一个合适的slab,然后查看该slab是否还有空闲的chunk,如果有则直接存放进去;如果没有则要进行申请。slab申请内存时以page为单位,所以在放入第一个数据,无论大小为多少,都会有1M大小的page被分配给该slab。申请到 page后,slab会将这个page的内存按chunk的大小进行切分,这样就变成了一个chunk的数组,在从这个chunk数组中选择一个用于存储数据。如下图,slab 1和slab 2都分配了一个page,并按各自的大小切分成chunk数组。?⑤:Memcached内存分配策略:? ? ? ?综合上面的介绍,memcached的内存分配策略就是:按slab需求分配page,各slab按需使用chunk存储。Memcached分配出去的page不会被回收或者重新分配Memcached申请的内存不会被释放slab空闲的chunk不会借给任何其他slab使用。知道了这些以后,就可以理解为什么总内存没有被全部占用的情况下,memcached却出现了丢失缓存数据的问题了。二、形象比喻Memcached内存分配机制:? ? ? ?每次给别人交流Memcached内存分配的时候,都会这样形象Memcached内存分配模型。整个Memcached缓存服务就像书柜,书柜中摆满了各种各样的笔记本,而每一种类型的笔记本正如Memcached的page存储单元;当我们翻开某个笔记本时,它里面有很多页数,而这些页数也就是Memcached的slab存储单元;笔记本每页都是由一行行组成,而这一行行就像是Memcached的chunk存储单元。而笔记本的每行也限定了所能容纳的字数,只要你在一行中写了几个字,无论有没有把该行占满,那么这行就是被使用的,正如Memcached中的chunk一样。? ? ? ?前一段时间,某个研发同学突然发现开发环境中一个Memcached缓冲服务器无法存储数据,其他缓存服务器正常。问题服务器存储数据的时候,服务器爆出?out of memory?的异常。但是,通过Memcached缓存服务器命中率监控界面可以得知,该服务器总缓存为:2.0G,数据存储所占用内存为:570MB,为什么会出现这种情况呢?为什么Memcached分配的还有内存,但是却爆出?out of memory?的问题呢?为此,查询并分析了Memcached内存分配机制,详细内容如下所述:1:首先,通过相关的Memcached命令,监控一些Memcached服务端配置信息数据:①:查看Memcached服务进程相关配置信息:ps -ef | grep memcached②:查看Memcached服务所支持的一些命令:mem
您可能关注的文档
最近下载
- 机电工程安装工艺细部节点做法优选.docx VIP
- 天津鲁能城购物中心调研报告.pptx VIP
- 9《y w》 课件 AI赋能 2025 部编版语文一年级上册.ppt
- 水力学知识点讲解及水力学习题集与答案解析.doc VIP
- 2025年医美运营工作计划 .pdf VIP
- 2025年杭州市临安区新锦产业发展集团招聘笔试参考题库含答案解析.pdf
- 兴业证券-黄金供需全梳理第一期:2024年谁在买黄金?.pdf VIP
- ER6B-C60、ER6B-C10型工业机器人机械使用维护手册(第二版).pdf VIP
- 三相鼠笼式异步电动机实验报告.doc VIP
- 002医疗器械质量安全关键岗位人员岗位说明.docx VIP
文档评论(0)