我们安装了 MediaWiki,有人抱怨它越来越慢。我们如何才能提高速度/性能?
我有一个建议(我将在下面添加),但我真的很想听到更多。最好每个答案一个建议。
答案1
一些很好的建议这里。对我来说,最大的不同(在 IIS 7 上从 8 秒到 0)是启用缓存和更改$wgDBserver = "127.0.0.1";
(从 localhost)。出于某种原因,localhost 是通过网络解析的。
以下是 Jaded 的完整帖子:
其中最大的影响之一是启用 Mediawiki 缓存和加速,将负载从 15 秒减少到大约 6 或 7 秒,详见本文:http://www.charlesrcook.com/archive/2012/09/12/mediawiki-iis7-output-caching-and-friendlyshort-urls.aspx简而言之,在您的 Mediawiki localsettings.php 文件中启用以下内容:
$wgCacheDirectory = "c:\your\path\to\cache"; $wgFileCacheDirectory = "c:\your\path\to\cache "; $wgEnableSidebarCache = true; $wgUseFileCache = true; $wgShowIPinHeader = false; $wgEnableParserCache = true; $wgCachePages = true; $wgMainCacheType = CACHE_ACCEL; $wgMessageCacheType = CACHE_ACCEL; $wgParserCacheType = CACHE_ACCEL; $wgMemCachedServers = array();
确保您的本地 IUSR 和 IIS_IUSR 帐户对缓存目录具有“修改”权限,否则 Mediawiki 缓存引擎的文件和目录将无法写入它们。
我使用 Wincache 对 PHP 中的缓存做了一些小改动,但几乎没有任何影响 - 如果您从 PHP 角度愿意,可以启用并配置它,但不要指望会有很大的飞跃。MySQL 查询缓存也是如此 - 我的 Wiki 站点相对较小,使用率最低,因此 MySQL 查询缓存并没有带来很大的改进。
让网站加速的最后一根稻草是修改我的 Mediawiki LocalSettings.php 文件中的 $wgDBserver 设置。它被设置为“Localhost”,这篇文章http://forums.iis.net/t/1153459.aspx/3/10建议在 Windows 7 及以上版本上使用“Localhost”,而 Server 2008 及以上版本开始让 IPv6 参与页面查询。传输层必须解析 localhost,并通过在 IPv4 和 IPv6 地址之间进行协商来实现,PHP 和 MySQL 需要先解析 IPv4 地址,然后才能允许页面呈现。看来这仍然不是一个完全受支持的集成协议,因此将 $wgDBserver 设置为 IPv4 地址“127.0.0.1”可将呈现时间从 6 秒缩短至 1 秒 - 问题解决了!
答案2
特别是当您的网站规模较小到中等时,不要使用内存缓存,因为所有 hmtl 页面的总大小不是问题 - 一个简单的解决方案就是打开文件缓存。
http://www.mediawiki.org/wiki/Manual:File_cache
我今天花了几个小时尝试在我的共享主机(在 bluehost)上启用任何 mediawiki 推荐的内存缓存解决方案,但发现没有办法做到,然后发现了这个选项并解决了所有问题。
这是打开文件缓存的 wiki:
http://robertinventor.com/bmwiki
根据 Google 分析日志,在文件缓存之前,加载大多数页面需要几秒钟,有时甚至需要更长时间,最长可达几分钟。
答案3
答案4
这可能与 MW 的当前版本无关,但请检查 php 设置mbstring.func_overload
。我将其设置为 2(作为小型 zabbix 安装的重新要求),它降低了同一台服务器上 MW 1.12 安装的性能。