最近小伙伴们的 PHP 项目遇到性能问题,想要定位性能问题。查了下 PHP 有一种方式是通过 Xdebug 获取程序执行的 trace,通过分析每个函数执行所占用的时间来定位问题所在。但那拿到 trace 文件后发现 Xdebug 打印成信息量相当庞大,虽然 Xdebug 在默认情况下以方便人们阅读的方式来打印 trace 信息的,但要想人工在近 10 万行信息中找到重要数据仍然是相当困难的。
去 google 是否有相应的工具,找到个xdebug-trace-tree,装上后,发现这个工具竟然不能对树进行折叠,其方便程度还不如 vim。
继续 google,发现多年以前,有人在Stackoverflow上建议使用 grep 对数据进行过滤,如:
cat trace.xt | grep -v ' '
试了下这个方法,效率提高了不少。在服务器上没有 gui 的环境下,可以帮我们一步步缩小问题的范围,但终究不够直观。
看了下 Xdebug trace 的格式,也不复杂。既然找不到,干脆自己做一个,也方便以后小伙伴们使用。即用了一天写了个XdebugTraceViewer的原型,最近又优化了下功能,基本上可正常使用,分享给需要的同学。由于从未做过 PHP 开发,对 PHP 并不了解,精通 PHP 的同学也可分享下 PHP 性能分析的经验。
项目地址: https://github.com/kuun/xdebug-trace-viewer
功能简介:
截图:
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.