让MediaWiki生产HTML页面降低服务器负载
“让MediaWiki生产HTML页面降低服务器负载”和“启用MediaWiki的File_Cache功能,生成静态HTML页面”在这里有相同的下面内容。
--James Qi 2008年10月21日 (二) 15:40 (CST)因为持续受到服务器负载过高的困扰,这几天干脆把内容更新的事情都交给同事去做,我来专心看看如何解决服务器负载的问题,除了自己研究以外,也找公司外面的朋友小许、以前的同事小钱进行了很多咨询。
先是对MediaWiki配置做了一些调整,例如将全文检索关掉、页面计数器关掉,看到还是负载高后又把$wgJobRunRate进一步降低到0.01,好像还有一些效果。
对CDN也进行了一些了解,但CDN基本也都是用Squid,主要解决全国各地访问的问题,我们目前Apache负载高的问题可能还解决不了,这个想法也作罢。
统计了一下,目前Squid的缓存命中率也在70%左右,还正常,但就是剩下的30%就让Apache服务器受不了,今天对Squid的配置文件又进行了一些参数调整,加大了很多参数,希望能将命中率提高到80%甚至90%,这样对后端Apache会好一些。想尝试用Squid的反向代理来做负载均衡,但没有测试成功。
至于小许、小钱怀疑的MySQL问题,暂时也顾不过来。
小钱以前在搜狐工作过,说他们的社区BBS等动态页面也都尽量进行了静态化,否则很难承受绝大的访问量。我们以前只是用了Apache的ReWrite做了一个URL模拟静态化,当然是不能减少负载的。我记得maintenance工具中有一个DumpHTML,可以批量生成整个网站的所有HTML静态页面,但似乎都是分布在多个目录中的.html文件,还不知道如何访问,以为采用后会导致URL改变,就没有继续试用。
今天先拿个已经暂停的网站 http://english.18dao.org/ 来做实验,按照MediaWiki官方网站中的File Cache说明,很快就设置好了文件缓存功能,发现URL没有任何改变,只是从HTML源文件中可以看到是cache的结果,这还是不错的。虽然官方网站的说明中指出File Cache还有一些更新机制方面的欠缺,不如Squid好,但我为了能尽快让后端的Apache负载降下来,就将邮政编码查询、电话区号查询两个内容很固定的网站的文件缓存功能打开了,相当于有File Cache和Squid两级缓存。
人工搜索网站暂时还没有这样尝试,因为用到太多扩展、动态的模板了,File Cache支持不太好,还是就用Squid。
小钱问了我们的服务器配置情况后,建议升级服务器,还要找程序员优化MediaWiki的代码。这些工作以后都是有必要的,逐步来创造条件解决吧。
附在LocalSettings.php中的设置:
$wgUseFileCache = true; /* default: false */ $wgFileCacheDirectory = "$IP/cache"; $wgShowIPinHeader = false;
设置定期更新Cache内容:
$wgCacheEpoch = date( "01000101000000" ); #每世纪零年一月一日零点 $wgCacheEpoch = date( "Y0101000000" ); #每年一月一日零点 $wgCacheEpoch = date( "Ym01000000" ); #每月一日零点 $wgCacheEpoch = date( "Ymd000000" ); #每天零点 $wgCacheEpoch = date( "YmdH0000" ); #每小时整点 $wgCacheEpoch = date( "YmdHi00" ); #每分钟 $wgCacheEpoch = date( "YmdHis" ); #每秒钟
增加一个“刷新”选单(注意:需要设置MediaWiki:Refresh为“刷新”二字):
# add page-refresh tab # $wgHooks['SkinTemplateContentActions'][] = 'wfContentRefreshHook'; function wfContentRefreshHook( &$content_actions ) { global $wgRequest, $wgRequest, $wgTitle; $action = $wgRequest->getText( 'action' ); if ( $wgTitle->getNamespace() != NS_SPECIAL ) { $content_actions['purge'] = array( 'class' => false, 'text' => wfMsg( 'refresh' ), 'href' => $wgTitle->getLocalUrl( 'action=purge' ) ); } return true; }
标签:MediaWiki、File Cache、HTML。 |
相关内容:
|
别名:MediaWiki的文件缓存功能、MediaWiki也可以生产静态页面、让MediaWiki生产HTML页面降低服务器负载。