编 写:袁 亮 时 间:2016-01-12 说 明:xhprof实际使用过程中的一些注意事项 一、扩展安装 1、前置说明 1.1 这个组件作为性能分析工具,测试环境有时候不能重现问题 1.2 直接在生产环境安装,容易导致当前服务受影响或者不可用 1.3 开启对性能也有一定影响,特别是大流量的情况下,直接全部开始,那就悲剧了 2、分流开启(成本适中、危险性低) 2.1 采用nginx分流,使一小部分流量请求发送到安装了xhprof的服务上 2.2 安装的那台服务器,可用开启监控,并跟生产环境对比 2.3 既可以达到采集到实际数据,也不影响大部分的用户和业务 3、流量复制(成本较高,基本无危险) 3.1 将正式环境的流量复制到测试机上,开启监控查看 3.2 优点是对原业务几乎无影响,也方便进行流量放大,做压力测试等 3.3 缺点是之前没做过,略有点麻烦 二、程序开启并记录 ps:下载http://pecl.php.net/get/xhprof-0.9.2.tgz,参考其中的example/example.php的写法 1、开启监控 xhprof_enable(); ps:只在需要的地方开,不要全部开,或者以一定概率开启 2、停止监控采集 $xhprof_data = xhprof_disable(); 3、采集监控数据 $XHPROF_ROOT = realpath(dirname(__FILE__) .'/..'); 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('可以保存到自己定义的文件夹中,未设置则采用php中的默认设置'); 4、保存监控数据 $run_id = $xhprof_runs->save_run($xhprof_data, "保存数据的后缀,作为同一项目的区分用"); ps:可以将数据保存在一个挂载盘中,这样可以在一台统一的服务器上统一查看调用 ps:后期也可以考虑自动化,针对慢的请求,直接在php配置中auto_prepend_file增加一段监控程序,按一定比例采样,并汇总分析 三、显示性能分析 1、可以在任意一台能访问存储的监控数据的地方 2、复制下载文件中的xhprof_html文件夹,并放在可web访问的地方 3、通过保存时候生成的run_id和自己设置的后缀,即可访问 4、重点关注callgraph.php,生成的调用链接,主要耗时的调用链有非常明显的颜色标注出来,一眼就能看到性能瓶颈在哪 ps:这个需要graphviz和graphviz-gd
标签: 调优
php性能分析工具xhprof – 基础使用
编 写:袁 亮 时 间:2015-07-24 说 明:php性能分析工具xhprof-基础使用 一、简单介绍 1、由Facebook开源的一个php性能分析工具 2、统计函数级别的请求次数,执行时间,阻塞时间,CPU和内存使用情况等 3、分析一个复杂项目的性能瓶颈时非常有用,很直观的看出问题在哪 4、也可以用这个来绘制调用的关系图,方便代码理解 二、安装扩展 1、下载扩展包 wget http://pecl.php.net/get/xhprof-0.9.2.tgz 2、解压 tar zxvf xhprof-0.9.2.tgz 3、安装 cd xhprof-0.9.2/extension/ /opt/ci123/php/bin/phpize ./configure --enable-xhprof --with-php-config=/opt/ci123/php/bin/php-config make make install 4、修改php.ini配置文件 vim /opt/ci123/php/etc/php.ini 最后,加上: [xhprof] extension=xhprof.so xhprof.output_dir=/tmp/xhprof ps:目录需要保证apache有读写权限,最后不能带/,否则会报错 5、检验是否成功 /opt/ci123/php/bin/php -m|grep 'xhprof' 6、重启apache /opt/ci123/apache/bin/apachectl -t /opt/ci123/apache/bin/apachectl restart 三、自带的范例运行 1、将解压出来的文件夹,复制到一个apache可访问的目录,extension目录不需要 2、浏览器访问该目录下的examples/sample.php 3、查看最后输出的提示,访问对应的链接,有相应的分析,xhprof_html/index.php 4、出不了图的话,安装下graphviz,默认不支持png,需要再装一个gd的 yum install graphviz yum install graphviz-gd 四、简单试用 1、blog.geekman.vip分析 2、首页,调用了99,829个函数 3、可以进行各种排序,查看时间主要耗在哪些函数上 4、可以查看整个运行过程中的性能瓶颈,图片格式,很直观 5、范例: http://192.168.0.249/xhprof/xhprof_html/?run=55b1de2f8613a&source=xhprof_foo 附录: http://mirror.facebook.net/facebook/xhprof/doc.html http://avnpc.com/pages/profiler-php-performance-online-by-xhprof http://www.cnxct.com/you-do-not-have-dot-image-generation-utility-installed/