memcache(四)memcache调优
2016-06-07 11:26
405 查看
在整理之前,先给大家导入一个概念:
内存碎片化:在向操作系统不断申请和释放内存的时候,会形成一些很小的内存片段,这种闲置的又没法利用内存的现象。
memcache存储方式:
memcache是利用 slab allocator 来管理内存的,呢么我们首先需要明白 slab allocator 是怎么一回事
slab allocator :首先将内存划分成若干个 slab
class(默认内个1M),然后将每个 slab class 切割成相同的chunk ,需要内存时根据内容大小选择合适的chunk存储数据。如下:
如上chunk分布,如果我们memcache要存储一个100byte的数据,呢么我们会选取空的112byte的这个chunk存储数据,如果112的chunk用完了,并不会去选取144,而是将原有的112chunk中旧的数据覆盖掉或者说是剔除,此处等后面具体讲解。
由于chunk的大小都是已经提前‘固定’好的,这样就容易造成内存浪费,比如100byte数据存入112byte中,多余的12byte就被浪费掉了,但是chunk的大小又不能自己设置,只能通过增长因子来调节,呢么这个增长因子的大小设置就非常重要了。下面我们介绍下增长因子。
memcache在启动的时候可以通过 -f 来指定增长因子的大小,默认为1.25,在改参数出现之前增长因子固定是2,因此我们在设置之前需要认真统计缓存大小,根据缓存大小来合理设计增长因子大小。
下面说一下删除:
1、惰性删除:数据过期后并不会直接删除缓存中的数据,因此status时,有信息;新值来占用chunk是会当成空的使用;get数据时,数据过去返回空并且删除缓存中数据。
优点:节省cpu和检测成本
2、Least Recently Used(LRU)这个就是上面说的覆盖的现象了,当某一chunk全部满了,这个时候会将最近最少使用的chunk中数据挤掉并存入。即便数据是永存生效也有可能被挤掉。
最后注意几点memcache的限制(默认)
内存碎片化:在向操作系统不断申请和释放内存的时候,会形成一些很小的内存片段,这种闲置的又没法利用内存的现象。
memcache存储方式:
memcache是利用 slab allocator 来管理内存的,呢么我们首先需要明白 slab allocator 是怎么一回事
slab allocator :首先将内存划分成若干个 slab
class(默认内个1M),然后将每个 slab class 切割成相同的chunk ,需要内存时根据内容大小选择合适的chunk存储数据。如下:
如上chunk分布,如果我们memcache要存储一个100byte的数据,呢么我们会选取空的112byte的这个chunk存储数据,如果112的chunk用完了,并不会去选取144,而是将原有的112chunk中旧的数据覆盖掉或者说是剔除,此处等后面具体讲解。
由于chunk的大小都是已经提前‘固定’好的,这样就容易造成内存浪费,比如100byte数据存入112byte中,多余的12byte就被浪费掉了,但是chunk的大小又不能自己设置,只能通过增长因子来调节,呢么这个增长因子的大小设置就非常重要了。下面我们介绍下增长因子。
memcache在启动的时候可以通过 -f 来指定增长因子的大小,默认为1.25,在改参数出现之前增长因子固定是2,因此我们在设置之前需要认真统计缓存大小,根据缓存大小来合理设计增长因子大小。
下面说一下删除:
1、惰性删除:数据过期后并不会直接删除缓存中的数据,因此status时,有信息;新值来占用chunk是会当成空的使用;get数据时,数据过去返回空并且删除缓存中数据。
优点:节省cpu和检测成本
2、Least Recently Used(LRU)这个就是上面说的覆盖的现象了,当某一chunk全部满了,这个时候会将最近最少使用的chunk中数据挤掉并存入。即便数据是永存生效也有可能被挤掉。
最后注意几点memcache的限制(默认)
name:256字节,二进制支持65536字节 value:1M 内存限制:32位系统为2G。 如果缓存数据量大会开启多个实例而不是只用一个实例存储
相关文章推荐
- 使用Memcache缓存mysql数据库操作的原理和缓存过程浅析
- PHP memcache扩展的三种安装方法
- PHP模块 Memcached功能多于Memcache
- Memcache 基础教程(php 缓存)
- 配置Memcache服务器并实现主从复制功能(repcached)
- php模块memcache和memcached区别分析
- windows环境下memcache配置方法 详细篇
- 批量获取memcache值并按key的顺序返回的实现代码
- Linux服务器中对于Memcache的安装配置方法
- PHP操作Memcache实例介绍
- 用PHP写的基于Memcache的Queue实现代码
- ubuntu 编译安装php 5.3.3+memcache的方法
- PHP中的Memcache详解
- 在telnet下操作memcache详解(操作命令详解)
- 在Mac OS的PHP环境下安装配置MemCache的全过程解析
- Memcache缓存系统知识点梳理
- win7下memCache的安装过程(具体操作步骤)
- 采用memcache在web集群中实现session的同步会话
- php扩展memcached和memcache的安装配置方法