《高性能Linux服务器构建实战》——3.3节Memcached的管理与性能监控

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 本节书摘来自华章社区《高性能Linux服务器构建实战》一书中的第3章,第3.3节Memcached的管理与性能监控,作者:高俊峰,更多章节内容可以访问云栖社区“华章社区”公众号查看

3.3 Memcached的管理与性能监控

3.3.1 如何管理Memcached
1.通过Memcached的监听端口进行管理
Memcached的管理相对比较容易,通过命令行登录到Memcached的监听端口,然后执行一些命令,通过这些命令的输入即可查看Memcached的运行状态。
管理Memcached的命令如下:
stats,统计Memcached的各种信息。
stats reset,重新统计数据。
stats slabs,显示slabs信息。通过这个命令能获取每个slabs的chunksize长度,从而确定数据到底保存在哪个slab。
stats items,显示slab中的item数目。
set | get, gets,前面已经介绍过,用来保存或获取数据。
例如,要查看Memcached的统计信息,执行“telnet ip 监听端口”命令,登录成功之后执行stats命令。具体过程如下:

[root@web181 ~]# telnet 192.168.1.181 11211
Trying 192.168.1.181...
Connected to web181 (192.168.1.181).
Escape character is '^]'.
stats
STAT pid 19900   #Memcached启动的进程ID
STAT uptime 2115676  #到目前为止启动了多少秒
STAT time 1287937993 
STAT version 1.4.5     #Memcached的版本信息
STAT pointer_size 64
STAT rusage_user 0.003999
STAT rusage_system 0.001999
STAT curr_connections 10  #当前的并发连接数
STAT total_connections 16  #总的连接数
STAT connection_structures 11 
STAT cmd_get 1   #执行的get命令的次数
STAT cmd_set 4    #执行的set命令的次数
STAT cmd_flush 0 #执行flush命令的次数
STAT get_hits 1     #get的命中数
STAT get_misses 0  #get的非命中数
STAT delete_misses 0
STAT delete_hits 0 
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 157
STAT bytes_written 129
STAT limit_maxbytes 33554432  #允许使用的最大内存容量
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT bytes 149
STAT curr_items 2
STAT total_items 2
STAT evictions 0
STAT reclaimed 0
END

通过以上信息可以看到Memcached的状态、连接的次数、当前的并发连接数。通过这些信息可以分析出,当前Memcached的换入换出是否比较厉害,容量是否足够。
2.利用memcached-tool管理Memcached
memcached-tool是Brad Fitzpatrick利用Perl编写的一个Memcached管理脚本。这个脚本通过将之前的命令行进行封装,使输入的值更加规整,进而更便于分析查看。可以通过下面的网址下载memcached-tool:http://code.sixapart.com/svn/memcached/trunk/server/scripts/memcached-tool
下面是memcached-tool的基本用法:

[root@web181 ~]# perl memcached-tool
Usage: memcached-tool <host[:port]> [mode]
       memcached-tool 10.0.0.5:11211 display
       memcached-tool 10.0.0.5:11211
       memcached-tool 10.0.0.5:11211 stats
       memcached-tool 10.0.0.5:11211 move 7 9
memcached-tool的执行示例如下:
[root@web181 ~]# perl memcached-tool 127.0.0.1:11211
  1      96 B      278 s       1       2      no
[root@web181 ~]# perl memcached-tool 127.0.0.1:11211 display
  1      96 B      278 s       1       2      no

以上过程格式化输出的stats命令的信息非常规整,如图3-7所示。


66e4514b618a3164ad81454d6a62e0d203d7fec3

总的来说,对单个或少量的Memcached服务器的维护相对容易,如果Memcached量非常大(这里说的量是指由单个Memcached运行100GB的数据容量或者有多台大容量的Memcached运行服务时),如何组织这些资源,以及在某一个Memcached服务器宕机时,如何能保证后端的数据库压力不会产生瓶颈,这是需要考虑的问题。在进行大规模部署时,需要根据业务分配不同的Memcached服务,同一类型的业务使用相同的资源,并且记录这些业务使用的端口资源,定期分析这些资源是否足够,以及利用一致性散列算法来确保在扩容Memcached的情况下,尽量减少对数据库的影响。

3.3.2 Memcached的监控
部署好Memcached之后,需要对Memcached的使用情况进行跟踪:监控Memcached的状态信息、内存使用情况、hit/miss的值。通过对Memcached的监控不仅能立刻了解Memcached出现问题,还能够利用状态信息来分析业务数据的增长并为未来的容量规划提供依据。
监控Memcached的工具很多,目前常用的监控工具有:memcache.php、Nagios和cacti。下面分别对这三种监控方法进行介绍。
1.利用memcache.php对单台Memcached进行监控
利用memcache.php进行监控是最简单的监控方法,只要机器支持PHP环境即可。这种监控的执行过程是:把这个文件放到可以访问的目录中,然后对这个memcache.php文件进行修改。下载此文件的网址如下:
http://livebookmark.net/memcachephp/memcachephp.zip
在使用memcache.php文件之前需要先修改用于访问的用户名和密码。

vi memcache.php
.....
define('ADMIN_USERNAME','memcache');    // 定义用户名
define('ADMIN_PASSWORD','password');    // 定义密码
.....
$MEMCACHE_SERVERS[] = 'mymemcache-server:11211'; //定义要查看的IP和端口
$MEMCACHE_SERVERS[] = 'mymemcache-server2:11212'; //可添加多个
修改自己定义的用户名和密码之后,就可以通过URL访问这个php文件了。输入用户名和密码后Memcached的状态图如图3-8所示。

<div style="text-align: center">
 <img src="https://yqfile.alicdn.com/f78c37d67755e3268ab36f7272f936ea0f95b069.png" >
</div>

图3-8很直观地反映了当前Memcached的使用情况、命中和不命中的比例等各种状态。
2.利用Nagios监控Memcached
利用Nagios来监控Memcached的方式有两种:一种方式是直接使用check_tcp(mixi)的方法来监控,代码如下:

define command {
command_name check_memcached
command_line $USER1$/check_tcp H$HOSTADDRESS$ -p 11211 –t 5 -E
-s 'statsrnquitrn' –e 'uptime' –M crit
}


这种方式很简单,可以直接使用,不需要安装其他插件。
另一种方式是通过Nagios 的Memcached监控插件可以详细地监视Memcached的get和add等动作。例如,可以通过stats命令来确认Memcached的运行状态。下载Nagios的Memcached监控插件的网址如下:
http://search.cpan.org/CPAN/authors/id/Z/ZI/ZIGOROU/Nagios-Plugins-Memcached-0.02.tar.gz
编译安装Nagios的Memcached监控插件后,通过Nagios的check_memcached直接访问Memcached服务器的监听端口。当然,也可以在将此插件安装在Memcached服务器后利用check_nrpe来获取Memcached服务器的状态信息,过程如下:

define command {

     command_name check_memcached_11211
     command_line $USER1$/check_memcached -H 192.168.1.221:11211 --size-warning 80 --size-critical 90
     }
配置完成后,在Memcached的界面会看到如图3-9所示的信息。

<div style="text-align: center">
 <img src="https://yqfile.alicdn.com/25e9abbb3cfd0182e41252a019a8a1e9e4c448ac.png" >
</div>

也可以将stats目录的结果通过rrdtool转化成图形,以进行性能监视,并将每天的内存使用量做成报表,通过邮件发送出去。
3.利用cacti监控Memcached
在cacti中采用一套监控Memcached的模板,可以图形化显示Memcached当前的状态信息。这个模板可以从以下网址下载:http://dealnews.com/developers/cacti/memcached.htmls
这里不介绍配置过程。配置完成后cacti监控Memcached的效果图如图3-10、图3-11、图3-12和图3-13所示。

<div style="text-align: center">
 <img src="https://yqfile.alicdn.com/35bf0bf74587a9dcf8ce5ed5ee89f59bc78dfb5d.png" >
</div>

当有多台Memcached时,可以考虑使用cacti和Nagios来配置统一的监控界面,这有利于后期对Nemcached进行运维。而memcache.php适合单台机器来使用。

**3.3.3 Memcached变种产品介绍**
国内外有很多基于Memcached开发的产品,这些产品支持所有Memcached的协议,同时侧重不同的应用场景,可以根据自己的应用需求选择合适的Memcached变种。下面分别介绍几种Memcached的变种产品。
1. memcachedb
memcachedb是新浪网基于Memcached开发的一个开源项目。通过为Memcached增加Berkeley DB的持久化存储机制和异步主辅复制机制,使Memcached具备了事务恢复能力、持久化能力和分布式复制能力,非常适合需要超高性能读写速度、持久化保存的应用场景,例如,将memcachedb应用于新浪博客的管理。如果对Memcached有持久化需求,可以考虑使用memcachedb。
2. repcached
repcached是日本人开发的基于Memcached的一个patch,实现Memcached的复制功能,它支持多个Memcached之间相互复制,可以解决Memcached的容灾问题。有cache容灾需求的可以尝试使用这一功能。
3. memcached_functions_mysql
这个功能相当于MySQL的UDFs(User Defined Functions),在MySQL中通过触发器更新Memcached。这样可以做到把数据写入MySQL,然后从Memcached获取数据,以减轻数据库的压力,同时减少很多开发的工作量。
关于memcached_functions_mysql的使用和经验会在下一节进行详细介绍。
4. memcacheQ
memcacheQ在Memcached的基础上实现了消息队列。下面以PHP客户端为例介绍memcacheQ实现消息队列的方式。
消息从尾部入栈:memcache_set
消息从头部出栈:memcache_get
memcacheQ最大的优势是:它是基于Memcached开发的,可以通过各种Memcached命令对它进行操作。基于Memcached开发的应用完全不需要做任何修改。
memcacheQ应用于数据库的多机房分布式部署环境,数据库分布在各地,各自写各自的数据库,同时写入本地的memcacheQ,本地的memcacheQ通过调度程序(需要自己开发)把数据从memcacheQ中读取出来,然后写入其他机房的数据库主库,最终使每个机房的数据库数据一致。如图3-14所示为memcacheQ在两个机房的部署情况。
<div style="text-align: center">
 <img src="https://yqfile.alicdn.com/cf582b55a0fec9072096dd40710526a3186a5583.png" >
</div>
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
安全 大数据 Linux
云上体验最佳的服务器操作系统 - Alibaba Cloud Linux | 飞天技术沙龙-CentOS 迁移替换专场
本次方案的主题是云上体验最佳的服务器操作系统 - Alibaba Cloud Linux ,从 Alibaba Cloud Linux 的产生背景、产品优势以及云上用户使用它享受的技术红利等方面详细进行了介绍。同时,通过国内某社交平台、某快递企业、某手机客户大数据业务 3 大案例,成功助力客户实现弹性扩容能力提升、性能提升、降本增效。 1. 背景介绍 2. 产品介绍 3. 案例分享
|
2月前
|
运维 监控 Linux
推荐几个不错的 Linux 服务器管理工具
推荐几个不错的 Linux 服务器管理工具
173 6
|
2月前
|
Prometheus 运维 监控
Prometheus+Grafana+NodeExporter:构建出色的Linux监控解决方案,让你的运维更轻松
本文介绍如何使用 Prometheus + Grafana + Node Exporter 搭建 Linux 主机监控系统。Prometheus 负责收集和存储指标数据,Grafana 用于可视化展示,Node Exporter 则采集主机的性能数据。通过 Docker 容器化部署,简化安装配置过程。完成安装后,配置 Prometheus 抓取节点数据,并在 Grafana 中添加数据源及导入仪表盘模板,实现对 Linux 主机的全面监控。整个过程简单易行,帮助运维人员轻松掌握系统状态。
288 3
W9
|
3月前
|
运维 关系型数据库 MySQL
轻松管理Linux服务器的5个优秀管理面板
Websoft9 应用管理平台,github 2k star 开源软件,既有200+的优秀开源软件商店,一键安装。又有可视化的Linux管理面板,文件、数据库、ssl证书方便快捷管理。
W9
320 1
|
3月前
|
缓存 Ubuntu Linux
Linux环境下测试服务器的DDR5内存性能
通过使用 `memtester`和 `sysbench`等工具,可以有效地测试Linux环境下服务器的DDR5内存性能。这些工具不仅可以评估内存的读写速度,还可以检测内存中的潜在问题,帮助确保系统的稳定性和性能。通过合理配置和使用这些工具,系统管理员可以深入了解服务器内存的性能状况,为系统优化提供数据支持。
106 4
|
3月前
|
运维 监控 安全
盘点Linux服务器运维管理面板
随着云计算和大数据技术的迅猛发展,Linux服务器在运维管理中扮演着越来越重要的角色。传统的Linux服务器管理方式已经无法满足现代企业的需求,因此,高效、安全、易用的运维管理面板应运而生。
|
3月前
|
运维 监控 Linux
服务器管理面板大盘点: 8款开源面板助你轻松管理Linux服务器
在数字化时代,服务器作为数据存储和计算的核心设备,其管理效率与安全性直接关系到业务的稳定性和可持续发展。随着技术的不断进步,开源社区涌现出众多服务器管理面板,这些工具以其强大的功能、灵活的配置和友好的用户界面,极大地简化了Linux服务器的管理工作。本文将详细介绍8款开源的服务器管理面板,包括Websoft9、宝塔、cPanel、1Panel等,旨在帮助运维人员更好地选择和使用这些工具,提升服务器管理效率。
|
2月前
|
存储 Oracle 安全
服务器数据恢复—LINUX系统删除/格式化的数据恢复流程
Linux操作系统是世界上流行的操作系统之一,被广泛用于服务器、个人电脑、移动设备和嵌入式系统。Linux系统下数据被误删除或者误格式化的问题非常普遍。下面北亚企安数据恢复工程师简单聊一下基于linux的文件系统(EXT2/EXT3/EXT4/Reiserfs/Xfs) 下删除或者格式化的数据恢复流程和可行性。
|
3月前
|
安全 Linux API
Linux服务器安全
人们常误认为服务器因存于数据中心且数据持续使用而无需加密。然而,当驱动器需维修或处理时,加密显得尤为重要,以防止数据泄露。Linux虽有dm-crypt和LUKS等内置加密技术,但在集中管理、根卷加密及合规性等方面仍存不足。企业应选择具备强大验证、简单加密擦除及集中管理等功能的解决方案,以弥补这些缺口。
52 0
|
Linux Shell Unix
带你读《Linux实战》之一:欢迎使用Linux
你正在期望学习管理Linux计算机吗?这是一个很好的选择。虽然Linux常常驻留于消费者的桌面计算机上,但它同时也是服务器领域的绝对主宰,特别是虚拟服务器和云服务器。如果你打算管理当前引人关注的服务器和网络体系架构,你将不得不围绕Linux的命令行展开学习。除了第1章之外,本书的每一章都包括一个或两个实际项目。鉴于第1章的内容主要用来填补你的Linux知识体系中可能存在的基础知识空白,因此其组织形式与其他章节有所不同。