设为首页 收藏本站
查看: 398|回复: 0

[经验分享] php性能分析工具xhprof的安装使用

[复制链接]

尚未签到

发表于 2017-4-7 10:30:59 | 显示全部楼层 |阅读模式
项目域名:http://www.ajia.com
项目路径:/home/www/
 
1.安装xhprof:
wget http://pecl.php.net/get/xhprof-0.9.2.tgz  
tar zxf xhprof-0.9.2.tgz  
cd xhprof-0.9.2  
cp -r xhprof_html xhprof_lib /home/www/  (复制xhprof_html、xhprof_lib这两个目录到“项目目录”下,此处目的是建立xhprof的数据分析目录,可将此目录配置成虚拟主机访问)  
cd extension/  
phpize (如果没有改命令,先安装php-del)  
./configure  -–with-php-config=/usr/bin/php-config   (php-config的路径需要正常)  
make
make install  (提示安装成功后显示xhprof.so扩展的存放路径)
 
 
2.php.ini配置文件中添加
extension=xhprof.so
xhprof.output_dir=/www/logs/xhprof (这里存放的是xhprof每次性能分析的“记录”的文件,前台显示的数据就来自该文件,该目录必须是“存在且能读写”)
 
 
3.重启php生效xhprof扩展,通过phpinfo()查看是否使用了xhprof扩展
 
 
4.安装libpng包(为了能够通过图例来显示性能分析,可以不安装)
wget http://hivelocity.dl.sourceforge.net/project/libpng/libpng15/older-releases/1.5.15/libpng-1.5.15.tar.gz
tar xvzf libpng-1.5.15.tar.gz && cd libpng-1.5.15
./configure
make
make install
 
 
5.安装graphviz(为了能够通过图例来显示性能分析,可以不安装)
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 --with-png=yes
make
make install
 
 
 
php代码使用示例:
 
在头部(在所有执行php进程开始的地方,一般是头部):
xhprof_enable(); 
//xhprof_enable(XHPROF_FLAGS_NO_BUILTINS); 不记录内置的函数
//xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);  同时分析CPU和Mem的开销
$xhprof_on = true;
 
/*
//生产环境可使用:
if (mt_rand(1, 10000) == 1) {
   xhprof_enable();
   $xhprof_on = true;
}
*/
 
尾部(在所有php进程结束的地方,一般是底部):
if($xhprof_on){
$xhprof_data = xhprof_disable();
$xhprof_root = '/home/www/';  //是上面安装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(); 
$run_id = $xhprof_runs->save_run($xhprof_data, "hx");
echo '<a href="http://www.ajia.com/xhprof_html/index.php?run='.$run_id.'&source=hx" target="_blank">统计</a>';
}
 
/*
运行程序,底部出现统计字样,点过去就可以看到性能分析了。按运行时间排序,很容易找出化时间最长的函数。点[View Full Callgraph]图形化显示,最大的性能问题会用红色标出,其次是黄色。
*/
 
 
  输出结果的含义:
  ct 函数调用次数,
  wt 花费的时间,
  cpu 花费的 CPU 时间(微秒即百万分之一秒),
  mu 使用的内存(bytes),
  pmu 使用的内存峰值(bytes)。
  web 分析结果页面含义
  Calls:函数的调用次数
  Incl. Wall Time (microsec) :包含内部函数花费的时间,单位微秒
  Excl. Wall Time (microsec):不包含内部函数花费的时间,单位微秒
  及所占百分比(%)
  注:Incl.:为 Including 包含的简写
  Excl.:为 Excluding 不包含的简写
  Wall Time:意为挂钟时间即任务花费的时间
  main():一个虚构的函数,程序根节点
  bar@2:递归调用 2 次
  Incl. CPU (microsecs):包含内部函数 CPU 花费的时间,单位微秒
  Excl. CPU (microsec):不包含内部函数 CPU 花费的时间,单位微秒
  Incl. MemUse (bytes):包含内部函数所占内存,单位字节
  Excl. MemUse (bytes):不包含内部函数所占内存,单位字节
  Incl. PeakMemUse (bytes):包含内部函数所占内存峰值,单位字节
  Excl. PeakMemUse (bytes):不包含内部函数所占内存峰值,单位字节
  及所占百分比(%)
  可以认为共三种情况:
  1. 包括内部函数
  2. 不包括内部函数或者说函数本身
  3. 所占总数(时间或内存使用)的百分比

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-361416-1-1.html 上篇帖子: php中session过期时间设置及回收机制详解 下篇帖子: PHP高级工程师的面试题【部分解答】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表