编 写:袁 亮
时 间: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