调整MediaWiki文件缓存设置降低服务器负载
--James Qi 2009年5月6日 (四) 20:49 (CST)
最近半个月左右,有一台服务器老是出问题,死机后只能让机房人员帮忙重启,但原因始终查不出来,到后来几乎每隔1、2天就随时可能Down掉。昨天晚上打球回来发现再次死机了,我也不好意思再去让机房人员重启了,就把站点都转移到另外一台服务器上去了,转移都很顺利,只是另外一台服务器的负载马上升高了很多,而且硬盘容量也更紧张。
今天早上去办公室,一边联系新配一台服务器拿过去顶替的事情,一边设法降低负载(否则可能所有网站都无法正常访问了)。从前面各种措施的效果来看,文件缓存还是很明显的,也就是利用MediaWiki的File Cache功能生成静态HTML文件。这个功能默认是不启用的,启用后还是很管用,特别是对大流量的网站来说,Apache将已经生成的HTML文件发给浏览者比从MySQL数据库读取数据发给浏览者的效率高很多倍。
不过文件缓存的缺点是更新机制不好,特别是不支持动态页面列表内容的更新。我以前都是采用设置$wgCacheEpoch来定期更新,有些网站用每天更新、有些网站每月更新,以便包含动态页面列表的页面也能周期性更新。但这样中仍然会过多消耗服务器资源,其实绝大多数不含动态数据的页面根本不需要更新,只需要更新包含动态数据的页面就可以。
我在MediaWiki官方网站上找到了两个扩展程序:Extension talk:MagicNoCache、Extension:CacheManager,第一个很符合我们的需要,但反复测试都不能正常使用,也没有什么技术支持,后面一个安装需要改数据库、比较麻烦,就都没用。我在需要更新的页面中加入一个人工保持一定频率更新的模板,这样该模板变化后,调用的页面也会更新,算是一种可用的解决办法。
关于File Cache还剩下一个问题,就是在http://18dao.jamesqi.com/ 等繁体网站中,从页面源文件来看没有使用缓存,但从设置的缓存文件目录来看,分明是又新缓存文件产生,这个问题很早就发现了,不过一直找不到原因和解决办法,留着以后检查、处理。
从今天白天几个小时的效果来看还是很明显的,服务器负载基本都控制在正常范围内。不过过两天还是准备将另外一台好服务器拿到机房去顶替坏掉的服务器,另外还将目前的服务器进行硬盘、内存的扩充。
补充:今天早上发现查号吧所在服务器过忙,网站几乎不能访问,被迫把手机号段、小灵通号段页面中的一万个号码列表暂时取消,服务器负载马上就下降到正常范围了。以前也发现这些页面生成HTML文件大、时间长,另外还有几次一些手机机主看到自己的号码在里面误以为是被当作骗子曝光,而来找我们要求删除的,现在就暂时取消,这对吸引流量有些不利,但为了保证访问速度,目前也只好如此了。--James Qi 2009年5月7日 (四) 13:07 (CST)
再补充:繁体网站中的两个问题都可以解决了:
- 第一个是URL的问题,默认都是http://tw.example.com/index.php?title=pagename&variant=zh-tw 这样的,很不好看,找到设置变量$wgVariantArticlePath = "$wgScriptPath/$1"; 就可以解决;
- 第二个是文件缓存的问题,默认是不缓存,在Article.php中找到“function isFileCacheable()”,将“&& ($ulang === $clang)”注释掉,就不再判断语言都进行缓存了。
虽然这两个困扰多时的问题都解决了,但修改第一个设置后所有收录的URL都会变化,修改第二个设置后需要更多的磁盘空间来应对,所以还要稍后逐步来实施。--James Qi 2009年5月8日 (五) 15:00 (CST)
标签:MediaWiki、缓存、File Cache、服务器、负载。 |
相关内容:
|