很早前开始使用MediaWiki的时候就听说了MemCache,但一直没有用过,直到前几个月下力气做Drupal优化,才安装尝试了Memcache,果然是效果明显,对数据库的压力下降了很多,命中率在80%左右,这样即使安装在单台服务器上,也会让该服务器的负载下降不少。当时记录了一篇博客《Drupal单服务器设置Memcache缓存》。
而Memcache的典型应用其实是部署在专门的缓存服务器上,我曾经看过Wikipedia的服务器拓扑图,缓存服务器的数量还不少。我们近期在准备撤掉部分以前的独立服务器转用云平台,所以在试用阿里云的时候留意了有专门的开放缓存服务OCS。
算了一算费用也不算太高,就准备申请一个低配置的试一试,没有想到还有一种128M的最低配置OCS目前是免费的,就马上开启,设置自己的云服务器ECS可以免密码访问,在同一个网络区域青岛机房。
有了以前自己设置的经验,这次相对来说要简单一些,在php中安装memcache的插件,再在Drupal或者MediaWiki中设置。
从 Drupal Community Documentation Memcache Installation 中摘录:
D6:
<?php $conf['cache_inc'] = './sites/all/modules/memcache/memcache.inc'; $conf['memcache_servers'] = array( '10.1.1.1:11211' => 'default', '10.1.1.1:11212' => 'default', '10.1.1.2:11211' => 'default', '10.1.1.3:11211' => 'cluster2', '10.1.1.4:11211' => 'cluster2' ); $conf['memcache_bins'] = array( 'cache' => 'default', 'cache_filter' => 'cluster2', 'cache_menu' => 'cluster2' ); ?>
D7:
<?php $conf['cache_backends'][] = 'sites/all/modules/memcache/memcache.inc'; $conf['cache_default_class'] = 'MemCacheDrupal'; // The 'cache_form' bin must be assigned no non-volatile storage. $conf['cache_class_cache_form'] = 'DrupalDatabaseCache'; $conf['memcache_servers'] = array( '10.1.1.1:11211' => 'default', '10.1.1.1:11212' => 'default', '10.1.1.2:11211' => 'default', '10.1.1.3:11211' => 'cluster2', '10.1.1.4:11211' => 'cluster2' ); $conf['memcache_bins'] = array( 'cache' => 'default', 'cache_filter' => 'cluster2', 'cache_menu' => 'cluster2' ); ?>
MediaWiki中更简单,将默认的localhost:11211改为123.m.cnqdalicm9pub001.ocs.aliyuncs.com:11211或者内网IP:11211就可以。
实际效果看上去还不错,OCS后台可以查看各种统计监控数据,包括每秒请求次数、已用缓存大小、记录数、吞吐量、读取命中率、逐出等,不过可能是因为权限的原因,在Drupal的Memcache Statistic菜单中就显示无法连接缓存服务器获取统计数据,只是如果打开每页缓存显示的话,可以看到每一个页面中有很多hit。
先这样试着用一用,以后会在更大网站中选用高配置的OCS。
评论