更新1:
在服务器上执行strace之后,我发现mmap的进程占用了这个处理时间的90%。我发现其中一个页面需要一分钟才能加载。
所以我找到了这个链接: PHP script keeps doing mmap/munmap
它可能显示同样的问题。但是,通过正确禁用php错误处理程序,我不明白anwer意味着什么?
原始问题:
在加载由我的服务器提供服务的特定网页时,如何检查我的网络服务器上的瓶颈?
出于某种原因,我网站上的几页变得非常慢,我不确定缓慢发生在哪里。
Chrome开发工具的屏幕截图:
所以基本上,我需要找出这部分需要长时间加载的内容?客户端网络工具似乎无法打破这种局面?
答案 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插件将有助于识别网站中缓慢加载的元素。这应该可以解决任何问题。
https://addons.mozilla.org/en-US/firefox/addon/yslow/
希望这有帮助
答案 4 :(得分:0)
Chrome的页面速度也是一个选项:
https://developers.google.com/speed/docs/insights/using_chrome