memcached性能监控

在上文“在Windows .NET平台下使用Memcached”中,我给大家介绍了如何在Windows平台上部署Memecached服务端,如何在.NET平台中应用Memcached,详细介绍了两种流行的客户端组件的配置,使用(存储、取值、替换、删除、缓存时间设定等),优缺点等。在我们的测试项目中,主要是针对“单台服务器”的应用场景。

事实上,在我们实际开发中,往往需要多台服务器。这样才能形成真正的“分布式架构”,才能更好的发挥memcached的巨大优势。当然,也不是绝对优势。任何架构都不可能绝对完美。回顾一下memcached的基本原理,其实就是在内存中维护一张巨大的hash表嘛。通俗点说,就是通过键值对的方式将数据缓存在服务器内存中,降低数据库服务器的负载,更重要的就是,数据库的性能瓶颈主要在于I/O环节(这也是关系型数据库最大的弱点,虽然具有良好的稳定性,但面对日益暴涨的用户数量,海量数据,高并发等问题,确实很难应付。所以近一两年,很多开源团队和技术爱好者很推崇“NoSql”技术)。稍微懂点计算机的都知道,内存的读写肯定要比磁盘I/O操作效率高很多。但是有了memcached就能彻底的放弃传统“关系型数据库”吗?当然不是,memcached这东西用不好,可能反而会降低性能,而且还可以造成致命的数据丢失。

开始思考一些问题,在多台memcached服务器共存的情况下,数据到底是如何存储的呢?如果是数据是实时同步的话,那同步工作到底是如何完成的呢?是服务器端的机制还是客户端的操作?假如是分布存储的,那么其中一台服务器宕机之后,那数据不就是丢失了吗?还有就是,如何才能真正实现多台memcached服务器的“负载均衡”呢?

带着这些疑惑,动手进入实例。通过反复的测试,监控,得出结论。往往比听别人的更可靠(有些技术或者理论,就算官方的也可能有出错或者遗漏)。

这里,首先推荐两款memcached的性能监视工具。通过工具,我们能够清楚的看到,数据是如何分布在多台服务器内存中的,读取/设置的操作次数等信息。

第一款工具,名字叫MemCacheDManager,下载地址:http://download.csdn.net/detail/dinglang_2009/3843109。

这是一款基于.NET技术开发的memcached管理工具,界面非常简单,操作也很方便。下载安装后,目录如图所示:

使用最新版的memcached.exe,替换掉BinaryFiles目录下的memcached.exe(老版本的)。

可以看看该管理工具的界面:

监控界面如下:

我个人不太熟悉这个工具,这里就不做太多的介绍,有兴趣的读者可以自己研究一下。我将介绍另外一个web版本的监控工具--memAdmin

其实memcached自带的命令行也可以监控这些参数信息,但是不太直观。这些工具也是通过读取这些信息,提供界面显示和操作,这里不做太多深入探讨,有兴趣的读者可以深入研究系统的源码,甚至可以像周公那样自己做一个简单的memcached监视工具。

memAdmin是一款轻量级的监控工具,基于基于 PHP5 & JQuery技术开发。可以到其官方网站去下载:http://www.junopen.com/memadmin/。

首先下载最新版的php(以php 5.38为例),由于笔者使用的是windows系统,所以应该到http://windows.php.net/download/这个地址去下载。当然,如果使用Linux类的操作系统,可以到http://php.net/downloads.php这个地址去下载。这里提醒大家一点,“.tar.gz”一般是Linux下的压缩格式,在windows下面也可以使用winrar解压出来,但是没有windows中特有的“exe”或者“dll”等信息。所以无法使用。笔者当时在下载memcached的时候,第一次就下载到了一个“.tar.gz”(其实就是for linux的版本),后果可想而知。

我这里使用的是 PHP 5.3 (5.3.8)      VC9 x86 Non Thread Safe 这个版本的(笔者其实使用的X64的windows操作系统,但实在找不到X64版本的php,所以就将就一下)。这里为什么要特别的提一下这个版本呢?因为后面我们在配置memcache_php.dll扩展的时候,需要根据具体php的版本信息,去下载对应的扩展dll。

关于PHP的PHP现在推出5.3.3版本了,不过下载的时候有几个不同版本选择。那就是VC6 X86和VC9 X86。 首先我来解答: VC6是什么? VC6就是legacy Visual Studio 6 compiler,就是使用这个编译器编译的。 VC9是什么? VC9就是the Visual Studio 2008 compiler,就是用微软的VS编辑器编译的。那我们如何选择下载哪个版本的PHP呢? 如果你是在windows下使用Apache的,请选择VC6版本; 如果你是在windows下使用IIS+PHP的,请选择VC9版本。

好了,下载完memAdmin和php之后,下面开始配置php的web服务器,部署memAdmin这个工具。其实读者完全可以下载安装“appserver”之类的wamp集成开发包,可以快速集成php、mysql、mysqladmin等。但笔者早就听说在IIS 7.5可以通过CGI扩展跑php,甚至可以集成apache 、tomcat等web服务器。集成方式如下:

第一种,是比较早期的,用CGI方式加载PHP环境。也就是在IIS里面配置解释器为php.exe,早期比较常见,目前使用较少。特点是:稳定,但效率太低。

第二种,通过ISAPI方式加载PHP环境,就是IIS里面配置解释器为php5isapi.dll,目前使用最多,应用最广。特点是:多线程,效率较高,但不够稳定。

其实还有一种效率更高的PHP和IIS的集成方式,就是利用FastCGI方式加载PHP环境。

尤其在windows 7以后,在IIS环境里可以直接装载FastCGI了。这种方式高效率,高稳定性,属于将来发展趋势。

而在PHP 5.3以后的PHP版本中,已经不支持ISAPI模式。

第一步,将下载好的php压缩包解压大C盘根目录下(可以解压到任意目录),找到php.ini.devleper这个文件,重命名为php.ini。

第二部,下载并安装phpManager,安装完成后,打开IIS 7.5,如果在IIS的主面板中看到下面图标,说明phpManager安装成功。

然后可以添加php的处理程序扩展等。值得注意的是,IIS7.5 和IIS 6.0的界面和配置还是有很大区别的,笔者使用了很多年的IIS 6.0,一开始也不太适应。 

然后找到FastCGI的设置界面:

好了   在IIS中新建一个普通站点,然后在物理目录中新建一个index.php文件,加入如下代码(打印当前php信息):

<?php
phpinfo();

?>

浏览网站,如果出现如下的界面,说明php及IIS已经配置完毕。

好了,下面将添加一个网站,直接指向下载好的memAdmin(解压后的文件夹目录)。添加完成后,浏览一下:

会出现红色的提示“php为安装memcache扩展...”。这是因为当前的php包中,没有配置对memcached的支持和扩展,所一该工具无法初始化,自然没法工作(无法正常访问和读取memcached服务器上的数据)。好了,在这个地址去下载对应的版本:http://downloads.php.net/pierre/

看到了吗?有两个版本哦。由于我们使用的php5.3.8  是VC9 x86 Non Thread Safe版本的,所以选上面那个带有“nts”的(笔者曾因为下载到了下面的那个版本,导致无法运行,花了中午吃饭,午睡的时间才搞定)。下载了扩展压缩包之后,解压出来,其实是一个名为"php_memcahe.dll"的文件,将该文件复制到php包目录下的ext文件夹中,然后在修改php.ini文件,加入一行“extension=php_memcache.dll”。保存后。重启IIS服务(iisreset),再浏览,就可以看到了memAdmin的登录界面了。

登录memAdmin后,就可以添加memcached服务器,进行监视和管理,具体操作实在很简单,毋庸赘述。由于篇幅有限,本文只能带大家入门,教大家如何配置并使用监视工具,便于大家去探索和解答那些关于memcached集群、负载、单点故障等相关的疑惑。这样也好,留给读者一点自由思考和自己动手的空间。下文中,我将使用监视工具,去探索memcached内部的数据分布算法,解答并总结本文最上面所说的那些疑惑。敬请期待。

             本文出自http://blog.csdn.net/dinglang_2009      转载请注明出处。

时间: 2024-07-30 20:54:08

memcached性能监控的相关文章

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

3.3 Memcached的管理与性能监控 3.3.1 如何管理Memcached 1.通过Memcached的监听端口进行管理 Memcached的管理相对比较容易,通过命令行登录到Memcached的监听端口,然后执行一些命令,通过这些命令的输入即可查看Memcached的运行状态. 管理Memcached的命令如下: stats,统计Memcached的各种信息. stats reset,重新统计数据. stats slabs,显示slabs信息.通过这个命令能获取每个slabs的chun

Memcached分布式内存对象缓存系统的性能监控

风信网(ithov.com)原创文章:本文将从三个方面向你介绍Memcached分布式内存对象缓存系统的管理与http://www.aliyun.com/zixun/aggregation/14216.html">性能监控,主要的内容涉如何管理Memcached,如何监控Memcached及随着Memcached应用不断衍生出来的各变种产品的介绍. 如何管理Memcached 1.通过Memcached的监听端口进行管理 Memcached的管理相对比较容易,通过命令行登录到Memcach

PHP性能监控测试----Xhprof

开始工作到现在,除了做新手任务,基本上都是和服务器端打交道,做前端的时间很短 目前公司的性能监控和测试:Xhprof和ab测试 Xhprof----facebook开源的,轻量级的PHP性能分析工具: 包括函数的调用次数,花费的时间(自身花费时间和包含内部函数花费的时间),所占内存/CPU,所占内存的峰值及所占百分比 具体怎么安装,使用可以去百度一下,这个真的是灰常的好用可以非常快的知道性能瓶颈在哪个文件的哪个函数,然后针对性的做优化:给个截图具体说明性能测试监控工具">数据库,查看源代码

用shell完成Informix的性能监控

用shell实现informix的性能监控,并以html格式输出,直观方便. 适合informix系统初建时监控系统性能.本例是按cron机制运行设计的,安排它在每天系统繁忙时进行监控,以便对系统的资源分配,参数设置进行分析和合理调整. #!/bin/ksh #ScriptName:getgloinfo #定义环境变量 INFORMIXDIR=/usr/informix INFORMIXSERVER=server0 ONCONFIG=onconfig.server0 PATH=$PATH:$IN

关于Java性能监控您不知道的5件事,第2部分:利用JDK内置分析器进行Java进程

关于Java性能监控您不知道的5件事,第2部分:利用JDK内置分析器进行Java进程监控 全功能内置分析器,如 JConsole 和 VisualVM 的成本有时比它们的性能费用还要高 - 尤其是在生产软件上运行的系统中.因此,在聚焦 Java 性能监控的第 2 篇文章中,我将介绍 5 个命令行分析工具,使开发人员仅关注运行的 Java 进程的一个方面. JDK 包括很多命令行实用程序,可以用于监控和管理 Java 应用程序性能.虽然大多数这类应用程序都被标注为 "实验型",在技术上不

利用SNMP和监控宝实现vps服务器性能监控

再我们管理服务器时候windosw系统较为直观,cpu使用多少,内存用了多少带宽等等 只要在远程桌面里 的任务管理器一目了然.但是在linux环境下就没那么轻松了,尤其服务器或者vps上运行的是大型网站,如果不能及时发现服务器性能消耗,很有可能导致网站在访问高峰期,出现卡死都不知道什么情况.那么就老鹰就介绍下如何利用SNMP加监控宝实现vps性能监控,测试平台CentOS. 1.我们需要安装一个组件 NET-SNMP 命令如下: yum install net-snmp net-snmp-dev

对Linux进行详细的性能监控的方法

  这是我们正在进行的Linux命令和性能监控系列的一部分.vmstat和iostat两个命令都适用于所有主要的类unix系统(Linux/unix/FreeBSD/Solaris). 如果vmstat和iostat命令在你的系统中不可用,请安装sysstat软件包.vmstat,sar和iostat命令都包含在sysstat(系统监控工具)软件包中.iostat命令生成CPU和所有设备的统计信息.你可以从这个连接中下载源代码包编译安装sysstat,但是我们建议通过YUM命令进行安装. 在Li

Linux系统与性能监控

  1. 性能监控介绍 性能优化是找出系统的瓶颈并优化操作系统来消除这些瓶颈的过程.许多系统管理员认为性能优化可以通过阅读cook book,设置一些内核参数就可以简单解决,但事实并非如此.性能优化是实现各个子系统之间性能平衡.这些子系统包括 CPU 内存 I/O 网络 这些子系统是高度相互依赖的.其中任何一个子系统的高负载都很容易导致其他子系统出现问题.比如 大量的页面调入I/O请求会使内存队列堵塞 全负荷的网卡会使CPU繁忙 维护闲置内存队列会使CPU繁忙 大量的内存写入硬盘的请求会使CPU

《深入浅出Node.js》作者分享:Node.js应用性能监控与问题诊断

直播回顾视频:https://yq.aliyun.com/edu/lesson/play/333 以下内容是根据直播和PPT整理. Node.js的优势与劣势 Node.js是基于JavaScript编写而成的强大的Web开发框架,它易于上手.入门简单:同时ECMAScript新规范.特性更新活跃,按年为单位进行更新.得益于弱类型语言的特性,Node.js的开发效率奇高,通过使用事件驱动.非阻塞式 I/O 的模型,使其轻量又高效.Node.js特别适合于web应用或API服务器,例如手机上的AP