博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP项目用xhprof性能分析(安装及应用实例)
阅读量:2252 次
发布时间:2019-05-09

本文共 2596 字,大约阅读时间需要 8 分钟。

1.   安装xhprof

  1. 下载并编译xhprof扩展
  2. 在web的/home/wwwroot/default目录下操作:
  3. git clone
  4. 编译扩展
cd xhprof/extension/phpize#这里用的是lnmp1.7集成环境./configure --with-php-config=/usr/local/php/bin/php-configmakemake install、 修改php.ini配置  vim /usr/local/php/etc/php.ini[xhprof]extension=xhprof.so;xhprof.output_dir=/tmp/xhprof#其中 xhprof.output_dir 是 xhprof 的输出目录,每次执行 xhprof 的 save_run 方法时都会生成一个 run_id.project_name.xhprof 文件。这个目录在哪里并不重要。注意此路径的权限要可读写!!否则文件无法生成成功

     5.重启lnmp      lnmp restart

 

到此扩展安装完成

              用php --ri xhprof查看扩展是否生效

             

 

              查看是否添加用phpinfo();

             

 

     6.添加虚拟主机,为xhprof扩展提供显示支持

Lnmp vhost add

 

域名:

目录:/home/wwwroot/xhprof/xhprof_html

 

vim /usr/local/nginx/conf/vhost/www.xhprof.com.conf

 

错误日志和日志开启,以便发生错误查看问题//注意最好提前建好目录

 

到此虚拟主机添加完成

 

       7.将xhprof相关文件复制到虚拟主机目录中

 

cp -R /home/wwwroot/default/xhprof/xhprof_html/* /home/wwwroot/xhprof/xhprof_html/

 

cp -R /home/wwwroot/default/xhprof/xhprof_lib /home/wwwroot/xhprof/

 

              到此xhprof已经完成搭建,现在访问后续可能会出问题,到后面讲解。

 

2.   使用xhprof

  1. 我用的yaf框架写的接口,所以我直接把xhprof测试放到入口处

 

//测试开始打点

xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);

//测试结束打点

$xhprof_data = xhprof_disable();

//引入相关文件,其中路径根据自己的更改。主要引入xhprof_lib.php和xhprof_runs.php两个文件,

//这两个文件在前期下载的安装中,自行放到项目目录中以便引入

include_once "/home/wwwroot/default/application/library/ThirdParty/xhprofdir/xhprof_lib.php";

include_once "/home/wwwroot/default/application/library/ThirdParty/xhprofdir/xhprof_runs.php";

$xhprof_runs = new \XHProfRuns_Default();

$run_id = $xhprof_runs->save_run($xhprof_data, 'your_project');

//打印生成相关的id,根据这个id查看测试性能结果

 var_dump($run_id)

        2.访问首页进行测试

 

得到id值

 

      3.访问xhprof的虚拟主机

 

4.点击对应的文件

 

5.点击[View Full Callgraph]查看图形化结果

 

 

 

 

 

 

 

 

3.   安装和使用中遇到的问题解决办法

  1. 访问xhprof显示测试结果的虚拟站点报错,500错误  或者不打印 ID的情况

 

查看错误日志

tail -5 /home/wwwroot/xhprof/logs/error.log

 

主要报错信息:open_basedir restriction in effect.

此时去php.ini中查看发现open_basedir注释着

一番查找发现   fastcgi.conf中有相关设置

vim /usr/local/nginx/conf/fastcgi.conf

 

将上面框出来的地方修改成自己的对应的目录 原来的注释掉,自己的写在下面

保存退出   重启 lnmp

访问正常!!

 

2.访问xhprof点击[View Full Callgraph]查看报错failed to execute cmd: " dot -Tpng"

原因一:未安装graphviz

如果看到 sh: dot: command not found ,说明服务器上没有安装画图软件graphviz

yum安装: yum install graphviz

              原因二:php.ini设置了禁用proc_open方法

如果安装好了graphviz,仍然出现”failed to execute cmd”,检查下服务器上的php.ini中disable_functions这项是不是限制了proc_open,因为在xhprof_lib/utils/callgraph_utils.php的xhprof_generate_image_by_dot中使用了proc_open函数,

 

删除proc_open,保存退出,重启lnmp 就解决了

 

 

4.   性能指标的具体含义、主要注意哪些参数

A、表格分析时,需要注意的指标

funciton name : 函数名

calls: 调用次数

Incl. Wall Time (microsec): 函数运行时间(包括子函数) 单位微秒

IWall%:函数运行时间(包括子函数)占比  

Excl. Wall Time(microsec):函数运行时间(不包括子函数) 单位微秒

EWall%:函数运行时间(不包括子函数)

 

B、图形分析时,需要注意的地方

红框是消耗资源占用比例最高的地方,需要着重看,根据具体数值,选择性进行优化。

黄色是消耗资源占用比例稍高的地方,根据具体数值,选择性优化。

白色是消耗资源占用比例一般的地方,基本不需要处理,不过也要根据具体数值分析。

 

转载地址:http://xmodb.baihongyu.com/

你可能感兴趣的文章
几种常见的设计模式
查看>>
第3章 机器学习的典型应用 3-4 典型应用-ctr预估和协同过滤
查看>>
13.22授权检测
查看>>
WebService,ASMX文件使用XML格式数据传递参数、验证与获取XML格式返回值的一种方式...
查看>>
vs2017 ios开发中遇到的问题
查看>>
简单的猜数字(JAVA版)
查看>>
es6环境搭建
查看>>
mysql<二>
查看>>
什么时候用@Resource,什么时候用@service
查看>>
Excel 保存问题
查看>>
TF-IDF介绍
查看>>
学习计划
查看>>
linux_base_commond_two
查看>>
在windows中使用vagrant
查看>>
C++ 编程笔记
查看>>
记录学习k-means聚类算法
查看>>
SpringMVC源码分析
查看>>
12-08关于冒泡排序和数组
查看>>
用户角色权限 案例
查看>>
C++四种cast操作符
查看>>