User:Aaron Schulz/How to make MediaWiki fast

From MediaWiki.org
Jump to: navigation, search
  1. Use cache.
  2. To LocalSettings.php, add (replace paths as needed):
    # Shared memory settings
    $wgMainCacheType = CACHE_ACCEL;
    $wgMessageCacheType = CACHE_ACCEL;
    $wgCacheDirectory = '<SOME DIRECTORY>';
    $wgParserCacheType = CACHE_ACCEL;
    $wgMemCachedServers = array();
    $wgUseGzip = true;
    $wgEnableSidebarCache = true;

    # NO DB HITS!
    $wgDisableCounters = true;
    $wgMiserMode = true;

    # Text cache
    $wgCompressRevisions = true;
    $wgRevisionCacheExpiry = 3*24*3600;
    $wgParserCacheExpireTime = 14*24*3600;

    # Diffs
    $wgDiff = 'C:/Server/xampp/htdocs/MW/bin/GnuWin32/bin/diff.exe';
    $wgDiff3 = 'C:/Server/xampp/htdocs/MW/bin/GnuWin32/bin/diff3.exe';
  3. Set $wgCacheDirectory (above) to use interface message caching.
  4. Set up squid servers if possible. Otherwise, at least enable file caching.
  5. Set up Memcached if possible. If you do, set $wgMainCacheType and $wgParserCacheType to CACHE_MEMCACHED in LocalSettings.php instead. This is recommended if you have a cluster of servers.
  6. Run
    php maintenance/rebuildFileCache.php
    if you use file caching (not squids).
  7. Set $wgJobRunRate to 0 and set up a crontab or shell script to run jobs (like this with this for example). With $wgJobRunRate at 0 and the above changes, you should be able to avoid db hits on many requests.
  8. Set $wgDiff and $wgDiff3 to gnu diff utility (download as needed). This is recommended. The default PHP diff code is slow and crashy.
  9. Edit the MediaWiki:Aboutsite and MediaWiki:Pagetitle system messages by changing {{SITENAME}} into your site name. This avoids extra parsing on each hit.
  10. If you really need hitcounters, use $wgHitcounterUpdateFreq instead of the $wgDisableCounters setting above.
  11. In the webserver's php.ini file. Make sure realpath_cache_size is set, perhaps to 512k or more.
  12. Consider enabling EnableMMAP and EnableSendfile in httpd.conf (for Apache). Please read the apache docs for NFS and compatibility issues first.
  13. [MySQL] Set your mysql server config files to only use server modes corresponding to $wgSQLMode (default is "" for no modes). Restart the mysql server, and then set $wgSQLMode = null.
Personal tools
Namespaces
Variants
Actions
Site
Support
Download
Development
Communication
Print/export
Toolbox