分析 Apache+Mysql+Php 服务器 - 哪个是瓶颈?

ama*_*ion 7 linux php optimization lamp

如何分析 Linux + Apache + Mysql + Php 服务器的速度?

我有一个在 Ubuntu 8.04 上运行的带有大量修改的 MediaWiki 实例的服务器。它有点迟钝 - 我还没有做任何优化它的事情,所以我相信有很多容易实现的成果可以让它更快。

但是为了优化,您需要先进行测量。我如何找出哪个组件(Apache、Php、Mysql)占用了最多的时间来为页面提供服务?

Tru*_*ity 10

好吧,当您分析这样的任何事情以找到瓶颈时,您需要一一排除问题。您需要一个基线来进行比较。如果您安装了“ab”工具(它与 apache 一起提供),您可以使用它。

为了获得基线,我建议获得至少几百个请求的平均值。下面是一个例子:

$ ab -n 400 http://yousite/
Run Code Online (Sandbox Code Playgroud)

查看“每个请求的时间”行的结果,它看起来像:

Time per request:       96.031 [ms] (mean)
Run Code Online (Sandbox Code Playgroud)

记下那个时间,因为这是基线。

要排除 apache 作为罪魁祸首,请在您的服务器上创建一个静态页面(只需保存您认为缓慢/缓慢的页面的 html)并再次对其运行 ab。

将一些 PHP 扔到静态页面中。它不一定是大量的,但它实际上应该做一些工作。MediaWiki 是相当不错的代码,因此如果您的系统上存在 PHP 瓶颈,我的资金将用于将 PHP 堆栈实际加载到内存中并再次执行测试。

看看这三个数字,看看下一步之间最大的跳跃在哪里。我的赌注是 MySQL 是三个中最慢的,但很可能是您在页面上加载了大量图像,这会减慢总请求时间,在这种情况下,您可能需要重新考虑页。