你在这里


缓存

一个Drupal网站Views消失的排查

James Qi 2015年4月29日 - 21:45 发布

  前一段时间发现分省的邮政编码系列网站首页常常会出现一个Views做的Block为空白的情况,例如北京邮政编码首页的“北京地市区县邮编”这一个Block里面没有内容,这样情况以前偶尔比较罕见会发生,例如几个月偶尔见到一次,但最近却成了经常的事情,每次重新清理该网站缓存会恢复,但1、2天后又出问题。

  我用阿里云的网站监控设置了对该站首页每隔5分钟读取一次,如果发现没有应该存在的内容就报警,连续几天夜间准点开始报警,先以为是cron运行的结果,但时间不对,后来发现是巡检程序读取head和content的时候偶尔会这样,但具体原因依然不清楚,还是清理缓存后恢复,不久又出错。sad

试用阿里云的开放缓存服务OCS

James Qi 2015年1月22日 - 21:41 发布

  很早前开始使用MediaWiki的时候就听说了MemCache,但一直没有用过,直到前几个月下力气做Drupal优化,才安装尝试了Memcache,果然是效果明显,对数据库的压力下降了很多,命中率在80%左右,这样即使安装在单台服务器上,也会让该服务器的负载下降不少。当时记录了一篇博客《Drupal单服务器设置Memcache缓存》。

  而Memcache的典型应用其实是部署在专门的缓存服务器上,我曾经看过Wikipedia的服务器拓扑图,缓存服务器的数量还不少。我们近期在准备撤掉部分以前的独立服务器转用云平台,所以在试用阿里云的时候留意了有专门的开放缓存服务OCS。

  算了一算费用也不算太高,就准备申请一个低配置的试一试,没有想到还有一种128M的最低配置OCS目前是免费的,就马上开启,设置自己的云服务器ECS可以免密码访问,在同一个网络区域青岛机房。

Drupal单服务器设置Memcache缓存

James Qi 2014年12月2日 - 15:45 发布

  很久前用MediaWiki的使用就听说过Memcache来加速网站,后来用Drupal看一些优化措施中也说到Memcache,但一直没有时间精力去尝试。

  前些天把PHP代码缓存的APC模块安装后,看统计数据,PHP程序代码的命中率几乎达到100%,服务器负下降还是比较明显的。就干脆一鼓作气,我和同事配合把Memcache也安装测试。

  APC的安装至需要与服务器的PHP环境、模块设置有关,与Drupal程序没有特别的关系,但Memcache除了服务器环境安装以外,还需要对Drupal系统加装模块来利用Memcache,下面就记录一下服务器安装Memcache后,需要对Drupal做的修改:

Drupal 7:

  安装memcache模块;为涉及到的Drupal 7网站安装memcache模块

  修改settings.php:

自由标签:

几个MediaWiki遗留问题:反垃圾、文件缓存更新、表单

James Qi 2013年3月28日 - 15:09 发布

  前几年一直用MediaWiki,从2006年到2010年,在2011年初改用Drupal后,以前的Wiki网站就基本上停止了更新,MediaWiki的版本也停在了1.16,后来还遇到不少网友站长咨询这方面的事情,我也只好告诉对方后面的版本我都不熟悉了。

  虽然网站平台停止了更新,但运用还在继续,除了把一些站的留言关闭外,还是有几个历史悠久的网站保留了用户留言、交互的功能,依然需要解决一些遗留的小问题。近期花了一些时间来解决下面几个问题,记录如下:

反垃圾:

  这两年国外的垃圾信息没有停,间隔着几天发几条、几十条,挺讨厌的,但又没有到必须用技术手段解决的地步,所以就人工来检查、删除。近期更频繁了,不得不想办法,好在这些国外自动发送的垃圾还是有规律的,就用LocalSettings.php中设置$wgSpamRegex来解决:

关闭MediaWiki File Cache、Drupal Boost、Squid等缓存

James Qi 2013年3月18日 - 15:17 发布

  从用MediaWiki做网站开始,服务器负载一直就是个问题,为了解决这个问题,我们添加了各种缓存,如MediaWiki的多种缓存机制,包括File Cache,也加上了外部的Squid。后来做Drupal网站并不需要Squid,但因为服务器上已经安装了Squid,我们也只好把Drupal架设在Squid之后,另外Drupal也采用了内部core缓存和Boost缓存。

  这些缓存机制可以解决不少问题,但缓存主要对数据量小、每页访问多的网站有明显效果,而对于数据量很大、每页访问少的网站起不到明显效果,有时甚至因为缓存文件过多起到反效果,而且缓存更新机制也有些小问题。

  上周在升级Drupal 6网站的时候,我们把大数据量的网站Boost缓存都去掉了,这样才方便升级。

为Drush添加Boost相关命令来批量清除缓存

James Qi 2013年1月31日 - 16:01 发布

  最近我们在对一些网站添加多语言以及修改自定义模块的工作中,需要对Boost缓存进行清除操作,逐个网站在菜单中清除需要很长时间,想到用Drush来批量处理系列网站,但Drush本身只能清除系统缓存,并不能处理Boost缓存,在网上找了些资料,找到了boost.drush.inc这个补丁可以解决,只需要在drupal/sites/all/modules/boost目录下新建这个文件,复制这些代码就可以了。

  为Drush添加了下面三个命令:

  • 'drush:boost-cache-clear-all':Clears all Boost cached data.
  • 'drush:boost-cache-clear-expired':Clears Boost expired data.
  • 'drush:boost-reset':Clears Boost's database and file cache.

 

Drupal的Boost文件缓存将磁盘占满

James Qi 2011年6月15日 - 22:59 发布

  今年开始用Drupal平台软件并升级了服务器硬件以后,数据量不断增加,流量和收入也有了新的突破。这两天看我们新购置的万转硬盘快要被占满了,300G的迅猛龙硬盘前天只有20G空余,昨天只有10G空余,今天再不想办法就满了。

  今天和同事一起商量了解决办法,先是计算了Drupal文件缓存占用磁盘的大小,以前MediaWiki的文件缓存可以选择使用.html或者.html.gz两种方式,我们一般都是选用占用空间更小的后者,而Drupal的Boost模块缓存机制与MediaWiki不同,是完全跳过了PHP和MySQL,只需要Apache与浏览者打交道,原理上来说比MediaWiki效率更高,不过每个页面需要生成.html和.html.gz两套文件,一般.html.gz文件平均大小在12.5KB左右,而未压缩的.html需要乘以3,也就是37.5KB左右,两套文件加起来就是50KB左右,是纯压缩文件的4倍。

延长Squid和文件缓存时间,减轻服务器负载压力

James Qi 2011年2月14日 - 09:25 发布

  在以前的MediaWiki所建站点中,我们启用了外部的Squid缓存和MediaWiki本身的File Cache两种页面缓存方式。

  File Cache设置成时间无限长,只有页面或者包含的模板变化时才会更新,这项设置对缓解服务器压力起到了关键作用,如果不启用的话,网站很快就会变得无法访问。缓存的更新问题也基本上还好,在正常控制下工作。

  MediaWiki软件默认的Squid缓存时间是5个小时,我们早就改成了24小时,不过考虑到我们很多网站的页面其实变化率很低,多数几个月都不会变动,其实是可以设置成更长的。我最近进行了设置修改,将Squid缓存的最长时间从1天改为了10天。如果是页面有变化,应该也会马上通过purge命令来让Squid更新的,不会造成延误影响。

订阅 RSS - 缓存