Linux 上的 Apache2 - 如何追踪性能问题

Linux 上的 Apache2 - 如何追踪性能问题

我现在在这个问题上困惑了一段时间:如何才能获得有关响应时间消耗的更多详细信息。

我的问题是响应时间的极端差异。有时服务器需要 5 秒或 10 秒或更长时间才能响应(尤其是第一次调用)。Firebug 将这段时间大部分标记为“等待”。当我检查 localhost/server-status(此延迟也发生在这里)时,大多数插槽都被占用了 - 但半秒钟后,它们又空闲了。我很难想象有这么多的负载峰值可以解释这种行为。

另一件奇怪的事情是:根据服务器状态,有时对 100K JPG 图像的请求需要 1、2 甚至 10 秒才能完成(请求列)。同时,包含一些 CPU 负载的 PHP 脚本可以在 100 毫秒或更短的时间内处理(当然,其他脚本也需要 1 或 2 秒)。对其他(较小)GIF 或 PNG 图像的请求甚至以 0 毫秒的时间列出。

这就是我被困住的地方:有没有什么方法可以查看发送一张简单的 JPG 图像需要 10 秒的时间?

感谢您的好主意!

-

系统:我指的是 Debian Linux (Sequeeze) 上的 Apache 2 网络服务器,它主要提供 PHP 脚本页面和图像。该服务器在一家专业的德国服务器托管商的 VPS 上运行。服务器上没有内存交换(就我从统计数据中看到的情况而言),并且 CPU 负载不是特别高(正常运行时间报告的值约为 3,在极端负载下可能会上升到 32 左右 - 我认为它应该是 8-CPU 系统)。当然,我永远无法确定服务器上的其他 VPS 会做什么。

特殊设置:值得注意的是,服务器通过 SSL 发送所有数据。我进一步将保持活动时间缩短至 1 秒,因为用户通常在每个页面上花费大量时间(30-60 秒),并且在检索图像后保持这些连接活动会很快耗尽服务器的内存(或我在 VPS 上可能使用的 2 GB)。由于 PHP 脚本较大,典型线程占用 20 MB RAM。因此只有 50 个服务器插槽(MaxClient),其中 35 个支持保持活动。

材料:我创建了一个测试页面(https://www.soscisurvey.de/example/?debug&password=demo),这是由服务器 site24x7.com 观察到的(通常响应时间为 1.4 秒,但经常会出现长达 20 或 30 秒的峰值)。为了交叉检查结果,我还将其发送到 Load Impact es:http://loadimpact.com/load-test/www.soscisurvey.de-35648bef3b84d3269e1fc7cb11bf1721

答案1

将其添加为答案而不仅仅是评论,因为事实证明是这样

这个问题听起来像是磁盘延迟问题。我出于某些原因认为这是问题所在

  • 响应时间差异很大,且标准负载指示器没有发出任何警告信号。
  • 托管在经常超卖的 VPS 上,并由 NAS/SAN 磁盘支持
  • 解决该问题的其他尝试均无果

由于您无法控制硬件,因此解决此问题的方法有限。您可以联系提供商让他们尝试修复它,使用 RAM 支持的文件系统或内存缓存(您已尝试过),或者更换提供商。

答案2

这就是我困惑的地方:有没有办法知道发送一张简单的 JPG 图像需要 10 秒的时间?

Firefox 的 TamperData 插件将明确显示您从服务器下载的内容以及每个项目花费的时间:

https://addons.mozilla.org/en-US/firefox/addon/tamper-data/

但是,如果下载需要 10 秒,您可能还会遇到一些其他 DNS 问题。

您可能还想检查一下 apachetop。将其安装在您的 Apache Web 服务器上。我已经将它安装在我的服务器上,并时不时地检查它。它将向您显示负载最高的页面:

http://www.howtogeek.com/howto/ubuntu/monitor-your-website-in-real-time-with-apachetop/

相关内容