本文共 2185 字,大约阅读时间需要 7 分钟。
XHProf 是一个轻量级的分层性能测量分析器。 在数据收集阶段,它跟踪调用次数与测量数据,展示程序动态调用的弧线图。 它在报告、后期处理阶段计算了独占的性能度量,例如运行经过的时间、CPU 计算时间和内存开销。 函数性能报告可以由调用者和被调用者终止。 在数据搜集阶段 XHProf 通过调用图的循环来检测递归函数,通过赋予唯一的深度名称来避免递归调用的循环。
XHProf 包含了一个基于 HTML 的简单用户界面(由 PHP 写成)。 基于浏览器的用户界面使得浏览、分享性能数据结果更加简单方便。 同时也支持查看调用图。 XHProf 的报告对理解代码执行结构常常很有帮助。 比如此分层报告可用于确定在哪个调用链里调用了某个函数。
XHProf 对两次运行进行比较(又名 "diff" 报告),或者多次运行数据的合计。 对比、合并报告,很像针对单次运行的“平式视图”性能报告,就像“分层式视图”的性能报告。
一、XHProf安装php扩展# 下载解压扩展包 https://pecl.php.net/package/xhprof(其他仓库:https://github.com/longxinH/xhprof)
wget -c https://pecl.php.net/get/xhprof-2.2.3.tgz
tar -xzvf xhprof-2.2.3.tgz
#生成扩展包so文件
cd xhprof-2.2.3/cd xhprof-2.2.3/
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
#php.ini配置
vim /usr/local/php/etc/php.ini
extension=xhprof.so
xhprof.output_dir=/tmp/xhprof
#重启php-fpm
service php-fpm restart
二、XHProf使用
使用前需要先下载xhprof界面展示代码,放在网站运行目录中。
1.安装xhprof界面代码
从仓库(https://github.com/longxinH/xhprof)中复制xhprof_lib和xhprof_html 两个文件夹到网址运行目录。并修改xhprof_lib文件夹中的callgraph.php文件中type为svg。
图片为svg类型可以解决错误:failed to execute cmd: " dot -Tpng". stderr: `Format: "png" not recognized. Use one of: canon cmap cmapx cmapx_np dot eps fig gv imap imap_np ismap pic plain plain-ext pov ps ps2 svg svgz tk vml vmlz xdot '
2.安装graphviz
graphviz 是一个图表生成软件,图标文件xhprof_html/callgraph.php会调用graphviz工具命令。。yum install -y libpng
yum install -y graphviz
yum install -y graphviz-gd<?php
// 开始分析
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
// 需要分析的代码
// 结束分析
$xhprof_data = xhprof_disable();
*如果安装失败选择源码安装:wget -c https://gitlab.com/graphviz/graphviz/-/package_files/6163716/download
tar -xzvf download
cd graphviz-2.46.0
make #make后如果有报错直接忽略,直接安装
make install
dot -v
3.生成采样<?php
ini_set('display_errors', on);
//开启性能分析
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
// 程序执行完调用
register_shutdown_function(function() {
//停止性能分析
$xhprof_data = xhprof_disable();
include_once './xhprof_lib/utils/xhprof_lib.php';
include_once './xhprof_lib/utils/xhprof_runs.php';
$xhprof_runs = new \XHProfRuns_Default();
$run_id = $xhprof_runs->save_run($xhprof_data, 'zx');
// echo $run_id;
});
访问采样:https://server_name/xhprof_html/index.php。
采样报告图:
转载地址:https://blog.csdn.net/weixin_34190683/article/details/115144245 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!