Memcached全面解析及使用zabbix监控

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:

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:查看过程12341234

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 install123456789123456789

Memcached的启动

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

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.41234567891011121314151617181920212223242526272829303132333435363738394012345678910111213141516171819202122232425262728293031323334353637383940

使用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}'1234567812345678

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


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

Insane_linux
相关文章
|
3月前
|
监控 安全 Linux
在Linux中,zabbix如何监控脑裂?
在Linux中,zabbix如何监控脑裂?
|
16天前
|
SQL 监控 数据库
OceanBase社区版可以通过Zabbix监控
OceanBase社区版可以通过Zabbix监控
55 7
|
9天前
|
SQL 监控 安全
员工上网行为监控软件:SQL 在数据查询监控中的应用解析
在数字化办公环境中,员工上网行为监控软件对企业网络安全和管理至关重要。通过 SQL 查询和分析数据库中的数据,企业可以精准了解员工的上网行为,包括基础查询、复杂条件查询、数据统计与分析等,从而提高网络管理和安全防护的效率。
21 0
|
1月前
|
SQL 监控 数据库
OceanBase社区版可以通过Zabbix监控
【10月更文挑战第5天】随着OceanBase社区版的广泛应用,企业纷纷采用这一高性能、高可用的分布式数据库系统。为了确保系统的稳定运行,使用成熟的Zabbix监控工具进行全面监控至关重要。本文通过具体示例介绍了如何配置Zabbix监控OceanBase,包括安装配置、创建监控模板和监控项、编写脚本、设置触发器及图形展示等步骤,帮助读者快速上手,及时发现并解决问题,确保业务始终处于最佳状态。
53 2
|
2月前
|
监控 关系型数据库 MySQL
zabbix agent集成percona监控MySQL的插件实战案例
这篇文章是关于如何使用Percona监控插件集成Zabbix agent来监控MySQL的实战案例。
55 2
zabbix agent集成percona监控MySQL的插件实战案例
|
3月前
|
存储 缓存 NoSQL
深入解析Memcached:内部机制、存储结构及在大数据中的应用
深入解析Memcached:内部机制、存储结构及在大数据中的应用
|
4月前
|
传感器 数据采集 运维
ERP系统中的生产线监控与异常处理解析
【7月更文挑战第25天】 ERP系统中的生产线监控与异常处理解析
170 8
|
4月前
|
传感器 数据采集 监控
ERP系统中的生产过程监控与质量管理解析
【7月更文挑战第25天】 ERP系统中的生产过程监控与质量管理解析
215 0
ERP系统中的生产过程监控与质量管理解析
|
3月前
|
SQL 监控 分布式数据库
【解锁数据库监控的神秘力量!】OceanBase社区版与Zabbix的完美邂逅 —— 揭秘分布式数据库监控的终极奥秘!
【8月更文挑战第7天】随着OceanBase社区版的普及,企业广泛采用这一高性能、高可用的分布式数据库。为保障系统稳定,使用成熟的Zabbix监控工具对其进行全方位监控至关重要。本文通过实例介绍如何在Zabbix中配置监控OceanBase的方法,包括创建监控模板、添加监控项(如TPS)、设置触发器及图形展示,并提供示例脚本帮助快速上手。通过这些步骤,可以有效监控OceanBase状态,确保业务连续性。
103 0
|
4月前
|
监控 关系型数据库 应用服务中间件
Linux zabbix监控 软件的安装
Linux zabbix监控 软件的安装

推荐镜像

更多