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

前言

性能分析是衡量应用程序在代码级别的相对性能。性能分析将捕捉的事件包括: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 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扩展及使用)