设为首页 收藏本站
查看: 1300|回复: 0

[经验分享] 在IIS 7.5中集成php环境,memcached群集环境下的性能监控

[复制链接]

尚未签到

发表于 2015-8-14 14:19:30 | 显示全部楼层 |阅读模式
  在上文“在Windows .NET平台下使用Memcached”中,我给大家介绍了如何在Windows平台上部署Memecached服务端,如何在.NET平台中应用Memcached,详细介绍了两种流行的客户端组件的配置,使用(存储、取值、替换、删除、缓存时间设定等),优缺点等。在我们的测试项目中,主要是针对“单台服务器”的应用场景。
  事实上,在我们实际开发中,往往需要多台服务器。这样才能形成真正的“分布式架构”,才能更好的发挥memcached的巨大优势。当然,也不是绝对优势。任何架构都不可能绝对完美。回顾一下memcached的基本原理,其实就是在内存中维护一张巨大的hash表嘛。通俗点说,就是通过键值对的方式将数据缓存在服务器内存中,降低数据库服务器的负载,更重要的就是,数据库的性能瓶颈主要在于I/O环节(这也是关系型数据库最大的弱点,虽然具有良好的稳定性,但面对日益暴涨的用户数量,海量数据,高并发等问题,确实很难应付。所以近一两年,很多开源团队和技术爱好者很推崇“NoSql”技术)。稍微懂点计算机的都知道,内存的读写肯定要比磁盘I/O操作效率高很多。但是有了memcached就能彻底的放弃传统“关系型数据库”吗?当然不是,memcached这东西用不好,可能反而会降低性能,而且还可以造成致命的数据丢失。
  开始思考一些问题,在多台memcached服务器共存的情况下,数据到底是 如何存储的呢?如果是数据是实时同步的话,那同步工作到底是如何完成的呢?是服务器端的机制还是客户端的操作?假如是分布存储的,那么其中一台服务器宕机 之后,那数据不就是丢失了吗?还有就是,如何才能真正实现多台memcached服务器的“负载均衡”呢?
  带着这些疑惑,动手进入实例。通过反复的测试,监控,得出结论。往往比听别人的更可靠(有些技术或者理论,就算官方的也可能有出错或者遗漏)。

  

  这里,首先推荐两款memcached的性能监视工具。通过工具,我们能够清楚的看到,数据是如何分布在多台服务器内存中的,读取/设置的操作次数等信息。
  第一款工具,名字叫MemCacheDManager,下载地址:http://download.iyunv.com/detail/dinglang_2009/3843109。
  这是一款基于.NET技术开发的memcached管理工具,界面非常简单,操作也很方便。下载安装后,目录如图所示:
DSC0000.gif
  使用最新版的memcached.exe,替换掉BinaryFiles目录下的memcached.exe(老版本的)。
  可以看看该管理工具的界面:
DSC0001.gif
  监控界面如下:
DSC0002.gif
  我个人不太熟悉这个工具,这里就不做太多的介绍,有兴趣的读者可以自己研究一下。我将介绍另外一个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安装成功。
DSC0003.gif
  然后可以添加php的处理程序扩展等。值得注意的是,IIS7.5 和IIS 6.0的界面和配置还是有很大区别的,笔者使用了很多年的IIS 6.0,一开始也不太适应。
DSC0004.gif
  
DSC0005.gif
  然后找到FastCGI的设置界面:
DSC0006.gif
  
  好了   在IIS中新建一个普通站点,然后在物理目录中新建一个index.php文件,加入如下代码(打印当前php信息):



view plain

  • <?php  
  • phpinfo();  
  •   
  • ?>  
  
浏览网站,如果出现如下的界面,说明php及IIS已经配置完毕。
DSC0007.gif
  好了,下面将添加一个网站,直接指向下载好的memAdmin(解压后的文件夹目录)。添加完成后,浏览一下:
  会出现红色的提示“php为安装memcache扩展...”。这是因为当前的php包中,没有配置对memcached的支持和扩展,所一该工具 无法初始化,自然没法工作(无法正常访问和读取memcached服务器上的数据)。好了,在这个地址去下载对应的版 本:http://downloads.php.net/pierre/
DSC0008.gif
  看到了吗?有两个版本哦。由于我们使用的php5.3.8  是VC9 x86 Non Thread Safe版本的,所以选上面那个带有“nts”的(笔者曾因为下载到了下面的那个版本,导致无法运行,花了中午吃饭,午睡的时间才搞定)。下载了扩展压缩 包之后,解压出来,其实是一个名为"php_memcahe.dll"的文件,将该文件复制到php包目录下的ext文件夹中,然后在修改php.ini 文件,加入一行“extension=php_memcache.dll”。保存后。重启IIS服务(iisreset),再浏览,就可以看到了 memAdmin的登录界面了。
DSC0009.gif
  
  登录memAdmin后,就可以添加memcached服务器,进行监视和管理,具体操作实在很简单,毋庸赘述。由于篇幅有限,本文只能带大家入 门,教大家如何配置并使用监视工具,便于大家去探索和解答那些关于memcached集群、负载、单点故障等相关的疑惑。这样也好,留给读者一点自由思考 和自己动手的空间。下文中,我将使用监视工具,去探索memcached内部的数据分布算法,解答并总结本文最上面所说的那些疑惑。敬请期待。
  
  本文出自http://blog.iyunv.com/dinglang_2009      转载请注明出处。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-99040-1-1.html 上篇帖子: asp.net应用程序的生命周期和iis 下篇帖子: Application Request Routing and the IIS 7.0 Web Management Service
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表