Memcache如何全面解析并实现zabbix监控

  介绍

这篇文章将为大家详细讲解有关Memcache如何全面解析并实现zabbix监控,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

<强> Memcached是什么?
  ,,Memcached是一个分布式内存缓存服务器,用于缓存数据库查询结果,减少数据库的访问次数,提高动态web页面的速度及扩展性。
<强> Memcached的特征
  ,一个。协议简单,Memcached使用简单的文本行协议
  ,b。基于libevent的事件处理
  ,c。内置内存存储方式
  ,d。每个Memcached服务器之间互不通信
  ,e。Memcached使用键值的方式进行储存

<强> Libevent: Libevent是一个用C语言编写的,轻量级的开源高性能事件通知库,主要有以下几个亮点:事件驱动(驱动),高性能,轻量级,专注于网络,不如ACE那么臃肿庞大;源代码相当精炼,易读,跨平台,支持Windows, Linux, * BSD和Mac Os;支持多种I/O多路复用技术,epoll,民意调查,dev/民意调查,选择和kqueue等;支持I/O,定时器和信号等事件;注册事件优先级。
Libevent已经被广泛的应用,作为底层的网络库,比如Memcached,呕吐、尼龙、Netchat等等。
<强> Memcached的内存存储
由于传统的内存分配使用malloc函数和自由函数进行内存分配,导致内存产生的大量的内存碎片,无法被利用。
Memcached采用Slab分配器实现内存的分配。
Slab分配器的原理:按照预先规定将内存分配成大小特定且不等的内存快(块),并把大小相等的内存快组织成组(板类)。
Memcached如何通过Slab分配器实现数据的缓存?
当一个数据到达Memcached时,Memcached根据数据的大小去选择大小适宜的板,在通过大部分的空闲列表,选中出块将数据缓存上去。
Memcached在分配内存过程中怎么实现不等长的内存划分呢?
Memcached在启动时会指定生长因子因子,来控制每个板之间的差异,并不是随意进行划分的。如:增长   因素因子为2,前一个板类中的每个块的大小为2,则下一个板   类中的每一个块的大小为4,就这样一次类推。默认Memcahed设置中生长因子的值为1.25

启动时指定Memcached的growth 因素因子   (root@COS_Clone1  ~) # memcached  -f  2, vv   - f:指定growth 因素因子vv:查看过程12341234

<强> Memcached的超时原理
Memcached怎么去监控自己在内存中缓存的资源是否过期,其采用懒惰   过期,Memcached不会自动的去监控并检测缓存在内存中的内容是否过期,当一个请求到来时,Memcached才会去检查请求资源的记录时间戳,检查记录是否过期,如没有过期再进行返回。
<强> Memcached的删除的原理
Memcached在内存中缓存数据时,首先选用已经超时的空间来记录本次要缓存的记录,若内存空间不足以缓存时,Memcached会使用LRU(最近最少未被使用算法)来将资源空间分配给新的记录。
<强> Memcached的分布式调度
 Memcache如何全面解析并实现zabbix监控”> <br/>假如web服务器要缓存一个数据库到Memcached服务器,那么要缓存在那个上呢? <br/>其实Memcached API提供了几个调度算法<br/>。余数计算:<br/>把将要缓存在Memcached上的记录的关键值进行C32计算,再将计算结果与节点数+ 1进行取余,得到的结果就是此数据要缓存的Memcached服务器。<br/>缺点:<br/>当进行增加或者移除节点时,缓存数据进行重组,无法获取与保存时相同的服务器,从而影响缓存的命中率。<br/> b。一致性哈希:<br/>将节点节点的主机名进行散列计算,并配置在0 ~ 2 ^ 23的圆上,再将资源的关键值进行散列计算,并映射在圆上,从映射位置顺时针查找,找到的第一个服务器就将数据保存在此服务器上。<br/> <img src=下载方式:   (root@COS_Clone1  ~) # wget  http://memcached.org/files/memcached-1.4.36.tar.gz安装:   [root@COS_Clone1  ~) # tar  -xzf  memcached-1.4.36.tar.gz  [root@COS_Clone1  ~] # mkdir /usr/地方/memcached (root@COS_Clone1  ~) # yum  install  libeven-devel [root@COS_Clone1  ~] # cd  memcached-1.4.36 [root@COS_Clone1  memcached-1.4.36] #,。/configure ——prefix=/usr/地方/memcached ——bindir=/usr/地方/bin ——sbindir=/usr/地方/sbin  [root@COS_Clone1  memcached-1.4.36] # make ,,, make  install123456789123456789

Memcache如何全面解析并实现zabbix监控