最近小伙伴们的 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
功能简介:
截图:
1
cszchen 2019-09-04 01:19:24 +08:00 via Android
很优秀,可惜会用 xdebug 的本来就不多
|
2
jfcherng 2019-09-04 01:36:05 +08:00
QCacheGrind
|
4
anewg 2019-09-04 11:15:02 +08:00
厉害
|
5
Rache1 2021-04-15 11:04:12 +08:00
nb,好用 ,正好需要,star
|