美文网首页php
linux PHP7环境安装性能分析工具xhprof扩展及使用

linux PHP7环境安装性能分析工具xhprof扩展及使用

作者: 祐吢房_2c9a | 来源:发表于2019-04-19 16:47 被阅读0次

前言

性能分析是衡量应用程序在代码级别的相对性能。性能分析将捕捉的事件包括:CPU的使用,内存的使用,函数的调用时长和次数,以及调用图,性能分析的行为也会影响应用性能。

在PHP的世界里,有两个截然不同的性能分析器-----主动和被动

主动 vs 被动性能分析
XDebug是一种主动分析器,在开发过程中使用,由开发人员启用。主动分析器收集的信息比被动分析器多,对性能的影响较大。通常不能应用宇生成环境中。

XHprof(本文主角)是一种被动分析器,由Facebook推出。是为了在生产环境中使用而打造的。它对应用性能的影响最小,同时可收集足够多的信息用于诊断性能问题。

PHP7编译安装xhprof扩展

# xhprof官方扩展暂不兼容php7,使用第三方
git clone https://github.com/longxinH/xhprof
cd xhprof/extension/
phpize
./configure --with-php-config=/Data/apps/php/bin/php-config
make && sudo make install

#说明
#由于每个人的环境不同,phpize命令和php-config、php.ini的路径可能不同
#这里介绍一个找文件强大的命令:locate  ,具体参考(https://www.cnblogs.com/xqzt/p/5426666.html)

#编译安装完成后,编辑php.ini
locate php.ini
sudo vi ****/****/php.ini
#在php.ini文件中增加extension=xhprof.so
#重启php和nginx
#查看是否已经安装xhprof扩展
php -m | grep xhprof
#有输出则代表安装成功

xhprof实战应用

使用起来很简单,在你需要测试的代码的首尾各添加xhprof_enable()和xhprof_disable()就好了

  • 模板
1 <?php
 2 // cpu:XHPROF_FLAGS_CPU 内存:XHPROF_FLAGS_MEMORY
 3 // 如果两个一起:XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY 
 4 xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
 5 
 6 // 要测试的php代码
 7 
 8 
 9 $data = xhprof_disable();   //返回运行数据
10  
11 // xhprof_lib在下载的包里存在这个目录,记得将目录包含到运行的php代码中
12 include_once "xhprof_lib/utils/xhprof_lib.php";  
13 include_once "xhprof_lib/utils/xhprof_runs.php";  
14  
15 $objXhprofRun = new XHProfRuns_Default(); 
16 
17 // 第一个参数j是xhprof_disable()函数返回的运行信息
18 // 第二个参数是自定义的命名空间字符串(任意字符串),
19 // 返回运行ID,用这个ID查看相关的运行结果
20 $run_id = $objXhprofRun->save_run($data, "xhprof");
21 var_dump($run_id);
  • 实例


    image.png
  • web查看
    nginx添加sever配置

server {
         listen 80;
         server_name dev.xhprof.haodf.net;
         root /home/dev/xhprof/xhprof_html;
         index index.php;
         location ~ \.php$ {
           include fastcgi_params;
           fastcgi_pass 127.0.0.1:9000;
           fastcgi_index index.php;
           include fastcgi.conf;
     }
  • 重启nginx
  • 配置本地hosts 10.1.xx.xx dev.xhprof.haodf.net
  • 浏览器输入访问 dev.xhprof.haodf.net


    image.png
  • 随便点一个文件访问


    image.png
  • 查看view Full Callgraph (如果报错的话:安装graphviz: sudo yum install graphviz 即可)


    image.png

图中红色的部分为性能比较低,耗时比较长的部分,我们可以根据根据哪些函数被标记为红色对系统的代码进行优化

补充

Function Name:方法名称。

Calls:方法被调用的次数。

Calls%:方法调用次数在同级方法总数调用次数中所占的百分比。

Incl.Wall Time(microsec):方法执行花费的时间,包括子方法的执行时间。(单位:微秒)

IWall%:方法执行花费的时间百分比。

Excl. Wall Time(microsec):方法本身执行花费的时间,不包括子方法的执行时间。(单位:微秒)

EWall%:方法本身执行花费的时间百分比。

Incl. CPU(microsecs):方法执行花费的CPU时间,包括子方法的执行时间。(单位:微秒)

ICpu%:方法执行花费的CPU时间百分比。

Excl. CPU(microsec):方法本身执行花费的CPU时间,不包括子方法的执行时间。(单位:微秒)

ECPU%:方法本身执行花费的CPU时间百分比。

Incl.MemUse(bytes):方法执行占用的内存,包括子方法执行占用的内存。(单位:字节)

IMemUse%:方法执行占用的内存百分比。

Excl.MemUse(bytes):方法本身执行占用的内存,不包括子方法执行占用的内存。(单位:字节)

EMemUse%:方法本身执行占用的内存百分比。

Incl.PeakMemUse(bytes):Incl.MemUse峰值。(单位:字节)

IPeakMemUse%:Incl.MemUse峰值百分比。

Excl.PeakMemUse(bytes):Excl.MemUse峰值。单位:(字节)

EPeakMemUse%:Excl.MemUse峰值百分比。

相关文章

网友评论

    本文标题:linux PHP7环境安装性能分析工具xhprof扩展及使用

    本文链接:https://www.haomeiwen.com/subject/xulzwqtx.html