`

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及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 转载请注明出处。


分享到:
评论

相关推荐

    ueditor.all.js

    memcached性能监控 - 丁码农 - 博客频道 - CSDN.NET

    Memcached v1.5.7 For Windows (附带Memcached和libevent源码两个版本)

    Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的...

    Memcached v1.5.3 For Windows (附带Memcached和libevent源码)

    Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的...

    memadmin_监听memcached

    memadmin 可以监听memcached的命中率和性能状态

    Memcached v1.5.2 For Windows (在MSYS环境里Mingw-w64 x32 x64编译)

    Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的...

    Memcached v1.5.4 For Windows (附带Memcached和libevent源码两个版本)

    Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的...

    Memcached v1.6.15 For Windows(MSYS编译)

    Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的...

    Memcached v1.6.12 For Windows(MSYS编译)

    Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的...

    高性能Linux服务器构建实战:运维监控、性能调优与集群应用

    运维监控与性能优化篇通过理论与实践相结合的方法讲解了如何利用Nagios进行性能监控,以及Linux服务器的性能分析原则和优化方法。集群高级应用篇是前面内容的综合,也是本书的核心,主要讲述了如何通过LVS+heartbeat...

    memadmin.zip

    服务器性能监控:GET、DELETE、INCR、DECR、CAS等常用操作命中率实时监控 支持数据遍历,方便对存储内容进行监视 支持条件查询,筛选出满足条件的KEY或VALUE 数组、JSON等序列化字符反序列显示 兼容memcache...

    构建高性能Web站点_PDF_45.5M

    第1章 绪论 1.1 等待的真相 1.2 瓶颈在哪里 1.3 增加带宽 ... 1.5 加快服务器脚本计算速度 ...第18章 性能监控 18.1 实时监控 18.2 监控代理 18.3 系统监控 18.4 服务监控 18.5 响应时间监控

    集群好书《高性能Linux服务器构建实战》 试读章节下载

    3.3 Memcached的管理与性能监控 3.3.1 如何管理Memcached 3.3.2 Memcached的监控 3.3.3 Memcached变种产品介绍 3.4 通过UDFs实现Memcached与MySQL的自动更新 3.4.1 UDFs使用简介 3.4.2 memcached_...

    构建高性能Web站点(PDF)

    此文档一共两部分,此下载链接为第1部分。 第1章 绪论 1.1 等待的真相 1.2 瓶颈在哪里 1.3 增加带宽 ...第18章 性能监控 18.1 实时监控 18.2 监控代理 18.3 系统监控 18.4 服务监控 参考文献 索引

    构建高性能Web站点(PDF)-第2部分

    此文档一共两部分,此下载链接为第2部分。 第1章 绪论 1.1 等待的真相 1.2 瓶颈在哪里 1.3 增加带宽 ...第18章 性能监控 18.1 实时监控 18.2 监控代理 18.3 系统监控 18.4 服务监控 参考文献 索引

    MemAdmin v1.0.5

    服务器性能监控:GET、DELETE、INCR、DECR、CAS等常用操作命中率实时监控 支持数据遍历,方便对存储内容进行监视 支持条件查询,筛选出满足条件的KEY或VALUE 数组、JSON等序列化字符反序列显示 兼容memcache协议...

    高性能网站构建实战

    第七篇监控应用篇,也是最后一篇,包括第15章和第16章,介绍了流量监控软件Cacti和系统监视软件Zabbix。附录部分,分别给出了使用ipvsadm命令、HAProxy和Squid的有用参考资料。, 《高性能网站构建实战》是作者多年...

    监控开发之如何开发简单高性能扩展性强的监控系统

    记得刚入行的时候,对于监控方面,用的是nagios和cacti,现在...有些查询完全可以从缓存里面取值,比如redis、memcached,不用非要从数据库里面来搞个消耗性能的大查询,有些监控是触发三次后,才真的去报警,这些可

    ChatGPT智能搜索引擎的性能优化与调优

    ChatGPT智能搜索引擎的性能优化和调优可以从以下几个方面入手: 1. 数据处理:对数据进行处理和优化,包括数据清洗、数据压缩、数据分片等。可以利用现有的大数据处理工具,例如Hadoop、Spark等,进行数据处理和优化...

Global site tag (gtag.js) - Google Analytics