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