如何配置 Linux + Apache + Mysql + Php 服务器以提高速度?
我有一个在 Ubuntu 8.04 上运行的带有经过大量修改的 MediaWiki 实例的服务器。它有点迟钝——我还没有做任何优化它,所以我相信有很多容易实现的目标可以让它更快一点。
但为了优化,您需要先进行测量。如何找出哪些组件(Apache、Php、Mysql)占用了最大的时间来提供页面?
如何配置 Linux + Apache + Mysql + Php 服务器以提高速度?
我有一个在 Ubuntu 8.04 上运行的带有经过大量修改的 MediaWiki 实例的服务器。它有点迟钝——我还没有做任何优化它,所以我相信有很多容易实现的目标可以让它更快一点。
但为了优化,您需要先进行测量。如何找出哪些组件(Apache、Php、Mysql)占用了最大的时间来提供页面?
好吧,当您对这样的事情进行分析以找到瓶颈时,您需要一一排除。您需要一个基线来进行比较。如果您安装了“ab”工具(它带有 apache),您可以使用它。
为了获得你的基线,我建议至少获得几百个请求的平均值。这是一个例子:
查看“Time per request”行的结果,它看起来像:
记下那个时间,因为这是基线。
要排除 apache 作为罪魁祸首,请在您的服务器上创建一个静态页面(只需保存您认为缓慢/缓慢的页面的 html)并再次运行 ab 。
将一些 PHP 放入静态页面。它不一定是大量的,但它实际上应该做一些工作。MediaWiki 是非常好的代码,所以如果您的系统上存在 PHP 瓶颈,我的钱将用于将 PHP 堆栈实际加载到内存中并再次执行测试。
看看这三个数字,看看下一步之间最大的跳跃在哪里。我敢打赌 MySQL 是这三个中最慢的,但很可能是您在一个页面上加载了很多图像,这会减慢总请求时间,在这种情况下,您可能需要重新考虑页。
我们运行了一个大小合适的 MediaWiki 安装,我们很快注意到 MediaWiki 从拥有一个 memcached 实例中受益匪浅。否则,它必须在每个请求上加载大量语言文件和用户数据。
Zombat和Frank Farmer在Stack Overflow 697802有几个不错的建议(我自己喜欢慢查询建议)。ab for apache 对于测试您所做的更改也非常有用。
同样非常重要的是 prefork 模块的配置。我大大减少了 /etc/apache2/apache2.conf 的特定部分中的数字。从那以后我有很大的延迟,页面会停止长达一分钟在完成加载之前......使用drupal的trace和devel模块进行跟踪,以及使用xdebug进行分析让我一无所知..我设置了APC并修改了MYSQL conf,但罪魁祸首实际上是prefork模块的值太小了..我提出了那些达到中等和足够的水平,现在服务器又回到了闪电般的速度。如果您有莫名其妙的高页面执行时间,请注意这些数字......
这些值适用于具有 512MiB RAM + 256MiB 交换空间的虚拟主机环境。祝您好运找到您的服务器的最佳值;)