生成火焰图分析php代码
flamegraph是一款可视化工具,用户分析程序堆栈调用,x轴堆栈轨迹,y轴堆栈深度,x轴长度越长,占用更多cpu时间。下面简单介绍如何使用xdebug以及flamegraph生成火焰图
准备工作
配置xdebug参数
1 | xdebug.trace_output_name = xdebug.trace.%t.%s |
下载flamegraph,git clone https://github.com/brendangregg/FlameGraph.git
,放置在任意位置
flamegraph
获取堆栈数据
请求页面/接口url,在url后面增加?XDEBUG_TRACE=<secret key>
,获取php堆栈数据 curl http://youdomain.com?XDEBUG_TRACE=<secret key>
,如果是命令行命令,则在php命令后使用参数php -d xdebug.auto_trace=1
转换堆栈数据
1 | ./stackcollapse-xdebug.php /tmp/xdebug.trace.1579703170._data_www_yii2_web_index_php.xt > out.folded |
生成火焰图
1 | ./flamegraph.pl out.folded > out.svg |
示例
参考
How to generate PHP Flamegraphs
Flame Graphs visualize profiled code