开发者社区> 科技探索者> 正文

Memcached全面解析并使用zabbix进行监控

简介:
+关注继续查看

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

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

启动时指定Memcached的growth factor因子
[root@COS_Clone1 ~]#memcached -f 2 -vv
-f:指定growth factor因子-vv:查看过程

Memcached的超时原理
Memcached怎么去监控自己在内存中缓存的资源是否过期,其采用Lazy Expiration,Memcached不会自动的去监控并检测缓存在内存中的内容是否过期,当一个请求到来时,Memcached才会去检查请求资源的记录时间戳,检查记录是否过期,如没有过期再进行返回。
Memcached的删除的原理
Memcached在内存中缓存数据时,首先选用已经超时的空间来记录本次要缓存的记录,若内存空间不足以缓存时,Memcached会使用LRU(最近最少未被使用算法)来将资源空间分配给新的记录。
Memcached的分布式调度
这里写图片描述
假如web服务器要缓存一个数据库到Memcached服务器,那么要缓存在那个上呢?
其实Memcached API提供了几个调度算法
a.余数计算:
把将要缓存在Memcached上的记录的key值进行C32计算,再将计算结果与node数+1进行取余,得到的结果就是此数据要缓存的Memcached服务器。
缺点:
当进行增加或者移除节点时,缓存数据进行重组,无法获取与保存时相同的服务器,从而影响缓存的命中率。
b.Consistent hash:
将node节点的主机名进行HASH计算,并配置在0~2^23的圆上,再将资源的key值进行HASH计算,并映射在圆上,从映射位置顺时针查找,找到的第一个服务器就将数据保存在此服务器上。
这里写图片描述
Memcached的安装方式

下载方式:
[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/local/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/local/memcached --bindir=/usr/local/bin --sbindir=/usr/local/sbin [root@COS_Clone1 memcached-1.4.36]#make && make install

Memcached的启动

[root@COS_Clone1 ~]#memcached -p 20001 -m 64m -d

Memcached状态查询

[root@COS_Clone1 bin]# memcached-tool 127.0.0.1:11211 stats#127.0.0.1:11211   Field       Value
         accepting_conns           1
               auth_cmds           0
             auth_errors           0
                   bytes           0
              bytes_read           7      读了多少字节
           bytes_written           0      写了多少字节
              cas_badval           0
                cas_hits           0
              cas_misses           0
               cmd_flush           0
                 cmd_get           0      进行了多少次获取
                 cmd_set           0      进行多少次插入
             conn_yields           0
   connection_structures          11
        curr_connections          10
              curr_items           0
               decr_hits           0
             decr_misses           0
             delete_hits           0
           delete_misses           0
               evictions           0
                get_hits           0        命中多少次
              get_misses           0
               incr_hits           0
             incr_misses           0
          limit_maxbytes    67108864
     listen_disabled_num           0
                     pid        4465
            pointer_size          64
           rusage_system    0.035994
             rusage_user    0.000999
                 threads           4
                    time  1495460002
       total_connections          11
             total_items           0       内存中多少条记录
                  uptime          35
                 version       1.4.4

使用zabbix监听memcached
监听数据:命中多少,总过多少资源,多少次获取,多少次进行添加,读取字节书,写入字节数
1.在Memached的主机上安装zabbix

[root@COS_Clone1 ~]# yum install zabbix zabbix-agent
[root@COS_Clone1 ~]#vim /etc/zabbix_agent.conf
    UserParameter=memcached.bytes_read[*],/usr/bin/memcached-tool $1:$2 stats |  grep "bytes_read" | awk '{print $2}'
    UserParameter=memcached.bytes_written[*],/usr/bin/memcached-tool $1:$2 stats |  grep "bytes_written" | awk '{print $2}'
    UserParameter=memcached.cmd_get[*],/usr/bin/memcached-tool $1:$2 stats |  grep "cmd_get" | awk '{print $2}'
    UserParameter=memcached.cmd_set[*],/usr/bin/memcached-tool $1:$2 stats |  grep "cmd_set" | awk '{print $2}'
    UserParameter=memcached.get_hits[*],/usr/bin/memcached-tool $1:$2 stats |  grep "get_hits" | awk '{print $2}'
    UserParameter=memcached.total_items[*],/usr/bin/memcached-tool $1:$2 stats |  grep "total_items" | awk '{print $2}'

2.在另一台主机上安装zabbix-server并启动在web页面进行配置
configure->host->item(memcached host)
定义item:
这里写图片描述
这里写图片描述
这里写图片描述
定义Graphs
这里写图片描述
测试结果
这里写图片描述

本文转自lnsaneLlinux博客51CTO博客,原文链接http://blog.51cto.com/lnsane784/1952693如需转载请自行联系原作者

Insane_linux

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
ZABBIX监控容器内的MySQL数据
ZABBIX监控容器内的MySQL数据
65 0
Zabbix与乐维监控对比分析(八)——其他功能篇
本篇是Zabbix与乐维监控对比分析专题系列文章的第八篇,也是最后一篇,包括二者知识库、CMDB系统集成与ITSM系统集成等功能的对比分析。
27 0
监控神器Zabbix部署
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。 zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。 zabbix由2部分构成,zabbix server与可选组件zabbix agent。 zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Ubuntu,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。
77 0
Zabbix与乐维监控对比分析(七)——网络功能篇
本篇是Zabbix与乐维监控对比专题系列文章的第七篇——网络功能篇,具体包括IP地址管理、网络端口映射发现、网络配置备份、专线监控等功能的对比分析
69 0
Zabbix与乐维监控对比分析(六)——图形图表篇
本篇是Zabbix与乐维监控对比分析专题系列文章的第六篇——图形图表篇,包括二者在模板图形及模板表格等功能的对比分析。
45 0
Zabbix与乐维监控对比分析(五)——可视化篇
前面我们详细介绍了Zabbix与乐维监控的架构与性能、Agent管理、自动发现、权限管理、对象管理、告警管理方面的对比分析,相信大家对二者的对比分析有了相对深入的了解,接下来我们将对二者的可视化功能进行对比分析。可视化是当代IT监控的一个创举,让IT监控很大程度摆脱枯燥烦杂的数据,使得监控过程变得更直观。
63 0
不逊色Zabbix的开源监控LibreNMS:全功能网络监控
不逊色Zabbix的开源监控LibreNMS:全功能网络监控
224 0
Zabbix与乐维监控对比分析(四)——告警管理篇
告警管理是所有IT监控平台最重磅的功能之一,也是评判一个监控平台好坏的最重要指标之一。告警管理篇是Zabbix与乐维监控对比分析专题系列文章的第四篇,主要包括告警管理、告警中心、告警收敛、告警通知、日报周报等内容。
63 0
Zabbix与乐维监控对比分析(三)——对象管理篇
本篇是Zabbix对比乐维监控专题系列文章的第三篇——对象管理篇,将从对象分类、添加/修改对象及脚本下发等方面对二者进行对比分析。
38 0
10分钟帮你搞定Zabbix监控平台告警推送到钉钉群
10分钟帮你搞定Zabbix监控平台告警推送到钉钉群
100 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
《Zabbix 监控常用手册》
立即下载
《Nginx 代理系统常用手册》
立即下载
低代码开发师(初级)实战教程
立即下载