5

更新 1:

在服务器上进行 strace 后,我发现 mmap 的进程占用了该处理时间的 90%。我发现其中一个页面需要一分钟才能加载。

所以我找到了这个链接: PHP script keep doing mmap/munmap

它可能显示相同的问题。但是,我不明白正确禁用 php 错误处理程序意味着什么?

原始问题:

在加载由我的服务器提供的特定网页时,如何检查我的 Web 服务器上的瓶颈?

出于某种原因,我网站上的几个页面变得非常缓慢,我不确定缓慢发生在哪里。

Chrome 开发工具的屏幕截图:

点击这里放大在此处输入图像描述

所以基本上,我需要找出是什么让这部分加载时间太长?客户端 Web 工具似乎无法解决这个问题?

4

5 回答 5

3

Xdebug: Profiling PHP Scripts - 注意 KCacheGrind 工具,或者,您可以使用高级 PHP 调试器apd_set_pprof_trace() 函数和 pprofp 来处理生成的数据文件。

于 2012-07-11T10:55:09.990 回答
1

我建议查看Xdebug 分析。其他两个答案处理客户端加载问题,但如果您的瓶颈是服务器端,则使用这些工具不会变得明显。

您可能还想查看正在运行以提供相关页面的数据库查询。您可能在某处丢失了一个索引,这可以解释最近随着数据库表大小的增长而导致特定页面速度缓慢的原因。

我会提取这些查询并使用 MySQL EXPLAIN运行它们(假设您使用的是 MySQL)以查看那里是否存在缓慢。

于 2012-07-11T10:47:07.553 回答
1

Derick Rethans(Xdebug 的作者)今天发布了一篇相当不错的文章,名为PHP 在做什么?

它涵盖了您已经完成的 strace,还向您展示了如何使用自定义.gdbinit来获取导致问题的实际 php 函数名称。

当然,您必须使用 gdb 从命令行运行脚本,所以我希望您的问题可以通过这种方式重现。

mmap用于创建文件的内存映射视图。

如果确实是导致它的错误处理程序,我猜您的脚本正在生成很多错误(您正在尝试记录这些错误),可能是循环中未定义索引的通知或其他内容)。

检查日志文件(是否记录了任何内容?),如果没有记录任何内容,请检查日志文件的权限,还要仔细检查您的错误报告级别设置为什么。

var_dump(ini_get('error_reporting') & E_NOTICE);- 如果您正在报告通知,则非零。

error_reporting(E_ALL & ~E_NOTICE);- 关闭报告通知。

于 2012-07-13T16:17:47.060 回答
0

使用 Fiddler 或 YSlow Firefox 插件等应用程序将有助于识别网站中加载缓慢的元素。这应该使任何问题变得明显。

http://fiddler2.com/fiddler2/

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

希望这可以帮助

于 2012-07-10T11:17:16.743 回答
0

Chrome 的 Page Speed 也是一个选项:

https://developers.google.com/speed/docs/insights/using_chrome

于 2012-07-10T13:02:48.400 回答