让MediaWiki生产HTML页面降低服务器负载

来自Jamesqi
跳转至: 导航搜索

“让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;
}
标签:MediaWikiFile CacheHTML
相关内容:
  1. 2010-11-10 22:20:28 MediaWiki-1.15升级到1.16.0步骤
  2. 2010-11-04 22:52:58 开启MediaWiki的搜索建议(Search Suggest)功能
  3. 2010-11-03 11:26:02 MediaWiki-1.15.0升级到1.16.0中出现的问题
  4. 2010-11-02 23:52:05 MediaWiki-1.15准备升级到1.16
  5. 2010-10-22 22:29:00 想写一本关于MediaWiki的书,有人需要吗?
  6. 2010-09-20 11:33:29 直接操作MediaWiki的MySQL数据库
  7. 2010-09-04 00:20:09 修改模板对付MediaWiki及扩展程序的Bug
  8. 2010-08-31 00:47:49 分割大容量MediaWiki数据库
  9. 2010-07-08 23:08:13 用HTML和站间链接减小MediaWiki数据库记录
  10. 2010-06-12 12:27:01 将数据导入MediaWiki进行到底
  11. 2010-05-20 22:01:46 导入大量名录数据到MediaWiki网站的例子
  12. 2010-05-05 15:06:09 不懂PHP编程也可以修改MediaWiki程序
  13. 2010-04-03 22:45:40 MediaWiki导入XML数据中需要转义的字符
  14. 2010-04-02 00:38:01 用MediaWiki搭建多语言网站群框架
  15. 2010-04-01 16:05:48 在美国VPS上升级MediaWiki

别名:MediaWiki的文件缓存功能MediaWiki也可以生产静态页面让MediaWiki生产HTML页面降低服务器负载

关于“让MediaWiki生产HTML页面降低服务器负载”的留言:

目前暂无留言

新增相关留言