Linux环境下面安装PHP性能分析工具XHProf(PHP5.6)

简介: Linux环境下面安装PHP性能分析工具XHProf(PHP5.6)


安装XHProf

1. 安装PHP扩展,XHProf的官方下载地址为http://pecl.php.net/package/xhprof,默认的PHP没有自带这个扩展,所以要进行安装。


wget http://pecl.php.net/get/xhprof-0.9.3.tgz #获取安装包

tar zxf xhprof-0.9.3.tgz  #解压安装包

cd xhprof-0.9.3  #进入文件夹

cp -r xhprof_html xhprof_lib /data/xhprof #根据具体情况进行拷贝

cd extension

phpize  #phpize侦测PHP安装环境

./configure

make

make install

备注:xhprof_html中存放分析结果项目,用来展示性能分析,需要将文件夹放到apache的项目目录下面才能运行访问 ;xhprof_lib作为三方库,用于引入到PHP项目中。


2. 配置php.ini支持XHProf,如果不知道php.ini在哪里,可以使用命令find / -name php.ini。


[xhprof]

extension=xhprof.so

;

; directory used by default implementation of the iXHProfRuns

; interface (namely, the XHProfRuns_Default class) for storing

; XHProf runs.

;

xhprof.output_dir=/data/xhprof/logs #根据实际情况进行配置

配置成功后,重启apache,使用service apache restart 或者service httpd restart等相关命令,如果phpinfo()出现如下页面,表示安装成功。




3. 安装Graphviz,安装Graphviz的目的是为了xhprof图形化web工具查看profiling log文件。


方式1:


wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.24.0.tar.gz

tar zxf graphviz-2.24.0.tar.gz

cd graphviz-2.24.0

./configure

make

make install

如果找不到对应的资源可以使用这个链接https://graphviz.gitlab.io/pub/graphviz/stable/SOURCES/graphviz.tar.gz


方式2:使用命令 yum install graphviz 直接安装。


4. 安装libpng(可能需要的步骤)


编译graphviz提示信息png: No (missing png.h),也就是dot 不支持PNG,此时需要安装libpng包。


wget http://nchc.dl.sourceforge.net/project/libpng/libpng15/1.5.1/libpng-1.5.1.tar.gz

tar zxf libpng-1.5.1.tar.gz

cd libpng-1.5.1

./configure

make

make install

或者使用命令yum install libpng直接进行安装。


开始进行性能分析

1. 创建一个文件test.php,然后按照下面的模式进行编码。


<?php


// start profiling

xhprof_enable();

// xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY); // 允许CPU和内存输出

// run program

....

// stop profiler

$xhprof_data = xhprof_disable();

//

// Saving the XHProf run

// using the default implementation of iXHProfRuns.

//

$XHPROF_ROOT = "/projects/xhprof";//这里填写的就是你的xhprof的路径

include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_lib.php";

include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_runs.php";

 

$xhprof_runs = new XHProfRuns_Default();

 

// Save the run under a namespace "xhprof_foo".

//

// **NOTE**:

// By default save_run() will automatically generate a unique

// run id for you. [You can override that behavior by passing

// a run id (optional arg) to the save_run() method instead.]

//

$run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_foo");

 

echo "---------------\n".

"Assuming you have set up the http based UI for \n".

"XHProf at some address, you can view run at \n".

"http://<xhprof-ui-address>/index.php?run=$run_id&source=xhprof_foo\n".

"---------------\n";


?>

2. 查看分析报告


在浏览器中访问该页面后,会在/data/xhprof/logs这个目录下面生成一个.xhprof_foo结尾的文件,然后会在页面上显示http://<xhprof-ui-address>/index.php?run=49bafaa3a3f66&source=xhprof_foo 这句代码,然后访问上面说到的展示目录http://xxx/xhprof_html/index.php?run=49bafaa3a3f66&source=xhprof_foo就可以看到内容了。




3. 查看函数调用图,然后点击[View Full Callgraph],就可以看到详细的函数调用过程。




问题总结

1.  编译XHProf扩展不通过,由于之前使用的xhprof-0.9.2版本,这个版本是09年的,比较老,换成xhprof-0.9.3就可以编译通过了。


2. 放在PHP里面后,出现了报错,将启动改为下面的代码就好了。


xhprof_enable(XHPROF_FLAGS_NO_BUILTINS | XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY);

3. 点击[View Full Callgraph]出现了。以为是没有安装好graphviz,结果是由于没有找到日志文件,请仔细读懂下面语句的意思。


Error: either we can not find profile data for run_id 4d7f0bd99a12f or the threshold 0.01 is too small or you do not have ‘dot’ image generation utility installed.

4. 由于安装了两个版本的graphviz,手动安装的版本没有安装好png支持,老是出现不支持png的提示,然后卸载掉这个手动版本就可以了,具体做法是cd到安装目录,执行make uninstall。


附录

XHProf报告字段含义:




附加一篇:给CentOS6.3 + PHP5.3 安装PHP性能测试工具 XHProf-0.9.2 给CentOS6.3 + PHP5.3 安装PHP性能测试工具 XHProf-0.9.2_看世界-Neilson的博客-CSDN博客


相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
11天前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
29 5
|
11天前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
29 3
|
11天前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
25 3
|
20天前
|
缓存 监控 Linux
Linux性能分析利器:全面掌握perf工具
【10月更文挑战第18天】 在Linux系统中,性能分析是确保软件运行效率的关键步骤。`perf`工具,作为Linux内核自带的性能分析工具,为开发者提供了强大的性能监控和分析能力。本文将全面介绍`perf`工具的使用,帮助你成为性能优化的高手。
65 1
|
20天前
|
缓存 监控 Linux
掌握Linux性能分析:深入探索perf工具
【10月更文挑战第26天】
25 1
|
23天前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
53 2
|
24天前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
32 3
|
22天前
|
Linux UED iOS开发
|
7天前
|
存储 缓存 Linux
【Linux】另一种基于rpm安装yum的方式
通过本文的方法,您可以在离线环境中使用RPM包安装YUM并进行必要的配置。这种方法适用于无法直接访问互联网的服务器或需要严格控制软件源的环境。通过配置本地YUM仓库,确保了软件包的安装和更新可以顺利进行。希望本文能够为您在特定环境中部署YUM提供实用的指导。
46 0
|
13天前
|
关系型数据库 MySQL Linux
Linux-安装Mariadb
本文介绍了在 Alibaba Cloud Linux 系统上安装和配置 MariaDB 10.5 的步骤。包括下载安装、初始化数据库、启动服务、处理启动失败的常见问题(如权限问题),以及如何连接数据库、设置密码和允许外部连接。通过这些步骤,您可以顺利完成 MariaDB 的安装和基本配置。
28 0

热门文章

最新文章