- 1、本文档共32页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
请仔细填写文档简介。如果是PDF扫描型文档则更应该简介,将增加至少百分之六十的访问量。
Memcached那些事 中文站技术部 赵一涵 2008-08-08 分享内容 Memcached server的实现(内存管理) Memcached 协议 Memcached client 简介 我们的使用现状 Cache简介 Cache定义:由于某些数据的获取或计算成本较大,往往彩将其预先算好或复制到更快的存储设备中,称为Cache (来自wikipedia) Cache最早出现于CPU设计领域 Web Cache (Web Browser, CDN) Server内部Cache 我们应用用到的Cache Database cache Ibatis cache Os cache TBStore Memcached 自己实现的Cache Memcached简介 high-performance, distributed memoryobject caching system intended for use in speeding up dynamic web applications by alleviating database load Danga : LiveJ 20M PV, 1M user /memcached/ 通过协议规定了server的职责 Memcached Server 网络通信 + 内存管理 基于libevent的事件处理 内置内存存储方式 简单的协议 分布式?集中式? Item的结构 Item的结构 除了保存必要的key-value对之外,item结构还定义了其他一些属性(上图是1.2.5版本中的item结构) 三个指针字段的作用是构造链表,具体的使用情况在下面两节会提到 time表示这个item最后一次被访问的时间, exptime为过期时间(相对时间,参考点是服务器启动时间) 几个长度字段 slab_clsid会在下面做详细介绍 整个结构体(不含key,suffix,data部分)占40个字节内存空间 Item的查找-hash item的查找-hash 采用普通的hashtable的实现,将key作hash,相同hash的item将以链表方式存放,如上图 item构造中的h_next指针就是用来构成这个链表的 hash函数的具体实现可以参考/bob/hash/doobs.html ,这同时也是一篇非常不错的分析hash函数的文章 注意:为了达到良好的一次命中率,hashtable是会自动扩展的。hashtable所占的内存约为item_num * 4byte * 4/3。如果一个cache实例中的item数量极多(100M或更多),这张hashtable本身的内存占用就不可忽视。在以小对象为主的缓存中,这一点是要引起重视的。 Item的存放 Item的存放-术语表 slab,page: 内存中的一个分块,一般以1Mbyte为单位或略小于这个值 chunk: 一个slab内部又会被分割为相等大小的若干块,以存放适合大小的item slab class: 按chunk的大小,slab会分成不同的类别,前述的slab_clsid就是这个类别的id slot,free chunk: item被移除后空的chunk,不会归还内存,留着给下一个适合大小的item使用 内存组织方式带来的问题 内存浪费 item基本总是小于chunk的,chunk size - item size这段空间被浪费。平均而言,浪费的内存和总内存的比将会达到 (factor - 1) / 2,factor为1.25时,这个比值为12.5%。减少这种内存浪费的一个办法是减小factor的值,让chunk大小增长更缓慢。当然,过小的factor值也会带来一个问题,因为最多只能有200个slab class,所以需要计算好。 有很多slab class中可能会没有item或只有很少的,这取决于你的item大小是分散分布的还是集中分布的。极端情况下,你的item是定长的,那它只会分布在一个slab class中,其他class初始化时分配的一个slab大小的空间都是浪费的。 内存组织方式带来的问题(续) slab回收和复用问题 上述实现中,slab只会被分配而不会被回收,如果这个slab class中不断地有item进来,那这是一个优点。但如果一个slab class一开始存放了很多item。然后新进来的item大小发生变化,又都存放到其他slab class中去了呢?这个slab class无疑多占了很多空间,而且当item开始过期,有很多slab应该被收回。 memcached本身有slab回收机制,如果开启,将把slab大小统一设置成1Mb。 Item的逐出-LRU队列 Item的逐出 当没有可用的空间给新来的item时,会按最近最
您可能关注的文档
- 《Windows_Server_2003网络配置与管理》架设邮件服务器.ppt
- 《Windows_Server_2003网络配置与管理》配置与管理Web服务器.ppt
- 02_安装及配置Windows Server 2003.ppt
- 03_配置Windows Server 2003网络.ppt
- 04_本地用户与组的管理.ppt
- 05_文件管理系统.ppt
- 06_磁盘系统管理.ppt
- 06_系统设计.ppt
- 08操作系统实验报告1(生产者消费者问题)曾天虹06.doc
- 08操作系统实验报告2(死锁避免)曾天虹06.doc
- 金太阳25-539B 2024-2025学年高二下学期6月期末试题生物试题.pdf
- 地理鹤壁高一下教学质量调研测试含答案或解析.pdf
- 金太阳25-512A2024-2025学年高一下学期5月月考试题生物学考试含答案或解析.pdf
- 九师联考2024-2025学年高一下学期6月期末考试语文试题含答案或解析.pdf
- 《阳城传统老火锅制作规范》.pdf
- 《阳城毛头丸制作规范》.pdf
- 《盐丰47水稻超高产栽培技术规程-团体标准编制说明》.pdf
- 《养老机构认知症老年人服务规范-团体标准编制说明》.pdf
- 《含铂富集料产品标准-团体标准编制说明》.pdf
- 《陶瓷粉加气混凝土砌块墙体保温系统应用技术规程》.pdf
文档评论(0)