ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:485.56KB ,
资源ID:8657739      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-8657739.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(05memcached的内存管理与删除机制分布式系统笔记Word格式.docx)为本站会员(b****6)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

05memcached的内存管理与删除机制分布式系统笔记Word格式.docx

1、最小的单元叫做 chunk(小块):存放数据的仓库多个小单元组成一个chunks:多个小块组成(所有的小块的大小全部一致)每个 slab class的大小为1M单个chunk 最大只能为 1M,也就是memcache的value值最大为1M3. memcache如何选择合适的大小?如果 122Bytes的slab装满了,现在有一个100Bytes的数据来了,存到哪里去?答:肯定不会存在144,还是存在122这个chunk里面,利用LRU算法来实现数据存储。LRU算法:最近最少使用原则。最近一段时间来,哪一个数据基本完成没有被使用过,则就清除掉这个数据。然后让新数据放到里面。但是,固定chunk

2、带来的内存浪费,如下22B4. factor调优memcached在启动的时候,会按照一定的大小来组织slab class,可以通过-f 来指定默认是1.3,相邻chunk之间的比值就是增加因子。可以根据自己网站的业务调整缓存因子的大小。是因为每个业务不一样,所需要的最小的chunk是不一样的。这个参数使得我们的系统变得更加适应自己的业务,因为数据可以自己设定大小。5. memcache的惰性删除memcached内部不会监视记录是否过期,而是在get时查看记录的时间戳,检查记录是否过期。这种行为被称为lazy(惰性)expiration。因此,好处是memcached不会在过期监视上耗费CP

3、U时间。比如:有 set(name, asion, 0, 3600) 过了3600秒就失效,失效后,并不会自动删除,只有当get查询时,检测是否过期,如果过期则删除,填充新的数据6. memcache的LRU算法memcached会优先使用已超时的记录的空间,但即使如此,也会发生追加新记录时空间不足的情况,此时就要使用名为 Least Recently Used(LRU)机制来分配空间。顾名思义,这是删除“最近最少使用”的记录的机制。因此,当memcached的内存空间不足时(无法从slab class 获取到新的空间时),就从最近未被使用的记录中搜索,并将其空间分配给新的记录。从缓存的实用角

4、度来看,该模型十分理想。当mecache里面的数据空间(默认是64M)已经占满了,再继续存储数据能否存储呢?答:能存储,要删除过期的数据,如果都没有过期,则删除最不活跃的数据,腾出空间给后面添加数据。例如:以122Bytes的slab举例,当数据装满后,如果来了一个100Bytes数据,如何处理?分析:内存的管理 LRU算法 、FIFO算法(基本不用)7. memcache的一些参数在vim下如果输入了 ctrl+s 可以使用 ctrl+q 退出-p 监听的端口 -l 连接的IP地址, 默认是本机 -d start 启动memcached服务 -d restart 重起memcached服务

5、-d stop|shutdown 关闭正在运行的memcached服务 -d install 安装memcached服务 -d uninstall 卸载memcached服务 -u 以的身份运行 (仅在以root运行的时候有效) -m 最大内存使用,单位MB。默认64MB 如果系统是32位的,则最大限制为2G,如果系统是64位,则无限制。-M 内存耗尽时返回错误,而不是删除项 -c 最大同时连接数,默认是1024 -f 块大小增长因子,默认是3 -n 最小分配空间,key+value+flags默认是48 -h 显示帮助-v 输出警告和错误信息-vv 打印客户端的请求和返回信息-i 打印mem

6、cached和libevent的版权信息高级特性分布式memcache配置什么是分布式?由于单台memcache的服务能力有限(单台服务器的内存大小是有限的),可以使用多台memcache来提供缓存的功能,这种架构就叫做memcache的分布式缓存系统。如何实现?在客户端实现分布式(就是在php程序端实现对数据进行分布式保存,php程序决定数据保存众多分布式服务器中的其中一台),在数据保存之前,根据一定的算法,将数据保存到那台memcache服务器上,在获取数据的时候,按照前面相同的算法去对应的memcache服务器上获取数据分布式算法1. 取摸算法将key的值对服务器的台数取模,然后将对应的

7、value值保存到对应的余数的那台memcache服务器上,一般这个hash函数 crc32( key ) % 3 crc32()这个函数可以使得一个字符串变成一个32位的整数坏处:当某一台服务器宕机或者需要增加一台服务器的时候,这个时候缓存数据基本全部失效,因为除数变了。 不严格的公式, 命中率 = 取到数据/总数 1/N N代表服务器的台数引发出来的问题:当memcache宕机之后,缓存数据失效,这个时候MySQL的压力会骤增,这个时候,MySQL会宕机,然后在重启MySQL,MySQL会在短时期内再次宕机,然后,稍微延迟一点(缓存已经重新建立了一部分),又宕机。随着时间的慢慢推移,MyS

8、QL基本上趋于稳定,缓存系统成功建立。因为缓存数据不存在,所有的请求全部要转向MySQL来提供,这种现象就叫做memcache的雪崩现象。概图:实操:1. 使用分布式缓存2. 从分布式获取3. 效果2. 一致性hash实现分布式1. 设置一个 0 - 232次方的圆环2. 将服务器的IP通过某种hash函数(crc32)映射为圆环上点(服务器的位置)3. 将数据的key也安装hash函数运算,从起点0 开始,按照圆环顺时针方向旋转,将对应的值保存到不比自己小的一个服务器位置上。好处:当某一台服务器宕机之后,数据的影响是最小的,只影响当前这一台服务器上的数据。缓存雪崩现象由于某个memcache

9、节点的缓存数据失效,导致其他memcache节点的缓存命中率下降,缓存中缺失的数据会去MySQL数据库中查询,短时期内,造成了MySQL服务器压力巨大,造成宕机,就叫做缓存雪崩现象。雪崩造成的原因?1. 由于算法不当,取摸算法,造成大量缓存失效,会引发雪崩 解决方案:一致性hash算法2. 缓存时间都是同一时间,缓存系统会在同一时间全部失效,这个也会造成雪崩缓存时间设置成一个范围内的随机时间(3-9小时)memcache如何做高可用1. 使用repcached实现,全称 replication cached是由日本人发明的memcached的高可用性技术,简称复制缓冲区技术。2. Memcac

10、heDB是一个分布式、key-value形式的持久存储系统。由sina人员开发。它不是一个缓存组件,而是一个基于对象存取的、可靠的、快速的持久存储引擎。协议跟memcache一致(不完整),所以很多memcached客户端都可以跟它连接。MemcacheDB采用Berkeley DB作为持久存储组件,故很多Berkeley DB的特性的他都支持。扩展1. 如何在Linux下给一个php添加一个扩展,说出通用步骤(redis)?1. 下载对应扩展源码2. 上传放入/usr/local/src/3. 解压 并进入文件夹内4. 在文件夹内执行 绝对路径下的 phpize /usr/local/php

11、/bin/phpize5. 执行configure ./configure -with-php-config=/usr/local/php/bin/php-config6. make & make install7. 生成一个目录文件,文件下面有一个.so 结尾的文件8. 修改php.ini文件9. 增加 extension_dir = 目录 extension= .so文件10. 重启Apache11. 添加 phpinfo()12. 浏览器查看2. memcache的安全性如何解决?由于memcache的本身设计就是极为简洁的,根本没有设置权限方面的限制。为什么不设置权限? 只提供缓存功能,为了精简1. 放在内网 192.168.1.110 内网IP外网无法访问2. 写一个防火墙验证规则,只允许自己规定IP的包可以转进来,其他的全部丢弃3. 当使用文件保存session文件时候,如果文件过多,如何处理?一般来说,超过65535个session文件的时候,这个时候session的获取就会变得异常缓慢,意味php代码执行很慢,如何解决?分层处理: 一个文件夹下建立A-Z开头的文件夹 然后A_Z在建立使用memcache处理: 单台memcache处理能力有限,就使用分布式memcache来处理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2