当前位置

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

James Qi 在 2011年6月15日 - 22:59 提交
内容摘要: 今年开始用Drupal平台软件并升级了服务器硬件以后,数据量不断增加,流量和收入也有了新的突破。这两天看我们新购置的万转硬盘快要被占满了,300G的迅猛龙硬盘前天只有20G空余,昨天只有10G空......

  今年开始用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倍。

  当有1000万个页面的时候(前一阵子添加的31个省份组织机构邮编就有这么多),需要占用的空间就等于10M*50KB=500GB,如果算上分类页面、列表页面以及Boost缓存的搜索结果文件等,比这个数字还会多,那个300GB的高速硬盘显然是不够的,需要TB级别容量的硬盘,那个WD的万转迅猛龙硬盘最大容量好像只有600GB,就先用一块普通1TB硬盘来专门做文件缓存试一试看,不行以后再换。

  同事测试了一下,用Linux下的ln -s命令是可以多级传递的,例如htdocs目录从系统盘链接到高速硬盘后,其下属的cache目录还可以继续用ln -s名录来指向其它硬盘,这样我们就可以将不同子网站的缓存目录指向另外的硬盘,从而将大量缓存文件分布开来。

  今天下午已经先转移了部分目录,为后来做的多语言网站生成缓存腾出20G空间,其它的目录还会继续转移。做的时候可以先把缓存文件都复制过去(文件数量大时这会是一个漫长的过程,需要几十到几百个小时以上),然后再修改目录链接,以避免所有缓存文件都需要完全重新生成所造成的数据库负载过高问题。