在加载网页时发现瓶颈?

时间:2012-07-10 11:09:03

标签: php linux apache webserver

更新1:

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

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

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

原始问题:

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

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

Chrome开发工具的屏幕截图:

Click here to enlargeenter image description here

所以基本上,我需要找出这部分需要长时间加载的内容?客户端网络工具似乎无法打破这种局面?

5 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

我建议调查Xdebug profiling。另外两个答案处理客户端加载问题,但如果你的瓶颈是服务器端,那么使用这些工具就不会明显了。

您可能还希望查看正在运行的数据库查询,以便为相关页面提供服务。你可能会错过一个索引,它可以解释当你的数据库表大小增加时特定页面最近的缓慢。

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

答案 2 :(得分:1)

Derick Rethans(Xdebug的作者)今天发表了一篇非常好的文章,名为What is PHP doing?

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

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

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

如果它确实是导致它的错误处理程序,我猜你的脚本会产生很多错误(你试图记录它们),也许是循环中未定义索引的注释或者某事。) / p>

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

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

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

答案 3 :(得分:0)

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

http://fiddler2.com/fiddler2/

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

希望这有帮助

答案 4 :(得分:0)

Chrome的页面速度也是一个选项:

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