php性能分析工具 - xhprof的安装使用
2015-08-11 15:54
1016 查看
一、前言
有用的东西还是记录下来吧,也方便以后的查询;这次记录一下xhprof的安装使用;xhprof是facebook开源出来的一个php轻量级的性能分析工具,跟Xdebug类似,但性能开销更低,
还可以用在生产环境中,也可以由程序开 关来控制是否进行profile。
二、安装
1. wget http://pecl.php.net/get/xhprof-0.9.3.tgz 2. tar zxf xhprof-0.9.3.tgz 3. cd xhprof-0.9.3/extension 4. /usr/bin/phpize (php版本安装后生成的phpize文件,可根据phpinfo查看,所以php版本不同,生成的phpize也不同,此步骤主要生成configure文件) 5. ./configure –with-php-config=/usr/bin/php-config (php-config的路径,也是php安装后生成的文件) 6. make 7. sudo make install (会自动将生成的扩展文件拷贝到扩展目录中/usr/lib64/php/modules) 当然具体的php文件的目录,每个人不尽相同,可根据phpinfo查询
三、php.ini配置
根据phpinfo找到 extension_dir的目录 (/etc/php.d/xhprof.ini) 添加一下内容: extension=xhprof.so xhprof.output_dir=/tmp/xhprof //xhprof的分析日志
四、重启服务
sudo /etc/init.d/http restart 查看phpinfo是否安装成功
五、使用方法
开头: xhprof_enable(); //开启监测 //xhprof_enable(XHPROF_FLAGS_NO_BUILTINS); 不记录内置的函数 //xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY); 同时分析CPU和Mem的开销 //要测试的代码 ... ... ... 结尾: $xhprof_data = xhprof_disable(); //停止监测,返回运行数据 $xhprof_root = '/(xhprof的虚拟主机目录)/'; //引入当初安装到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, "xhprof"); echo '<a href="http://(xhprof的虚拟主机域名)/xhprof_html/index.php?run='.$run_id.'&source=xhprof" target="_blank">xhprof统计</a>';
上边的代码使用了,给xhprof设置虚拟主机的方法。
把源码包中的 xhprof_html 和 xhprof_lib 文件夹拷贝到自己建立的虚拟目录中
cp -r xhprof_html xhprof_lib /xxx/xhprof/ (此处目的是建立数据分析目录,可将此目录配置成虚拟主机访问)
运行后,统计点击返回的 xhprof统计 链接,即可。
六、注意问题以及名词解释
在显示的统计页面中,点[View Full Callgraph]图形化显示(最大的性能问题会用红色标出,其次是黄色);点击后,可能提示错误消息,执行以下命令即可
yum install -y graphviz yum install graphviz-gd
名词解释
Function Name 函数名 Calls 调用次数 Calls% 调用百分比 Incl. Wall Time (microsec) 调用的包括子函数所有花费时间 以微秒算(一百万分之一秒) IWall% 调用的包括子函数所有花费时间的百分比 Excl. Wall Time (microsec) 函数执行本身花费的时间,不包括子树执行时间,以微秒算(一百万分之一秒) EWall% 函数执行本身花费的时间的百分比,不包括子树执行时间 Incl. CPU(microsecs) 调用的包括子函数所有花费的cpu时间。减Incl. Wall Time即为等待cpu的时间 减Excl. Wall Time即为等待cpu的时间 ICpu% Incl. CPU(microsecs)的百分比 Excl. CPU(microsec) 函数执行本身花费的cpu时间,不包括子树执行时间,以微秒算(一百万分之一秒)。 ECPU% Excl. CPU(microsec)的百分比 Incl.MemUse(bytes) 包括子函数执行使用的内存。 IMemUse% Incl.MemUse(bytes)的百分比 Excl.MemUse(bytes) 函数执行本身内存,以字节算 EMemUse% Excl.MemUse(bytes)的百分比 Incl.PeakMemUse(bytes) Incl.MemUse的峰值 IPeakMemUse% Incl.PeakMemUse(bytes) 的峰值百分比 Excl.PeakMemUse(bytes) Excl.MemUse的峰值 EPeakMemUse% EMemUse% 峰值百分比
七、参考资料
http://blog.csdn.net/maitiandaozi/article/details/8896293 http://www.cnblogs.com/wangtao_20/archive/2011/03/16/1986508.html http://www.cnblogs.com/wangtao_20/archive/2013/09/13/3320497.html http://avnpc.com/pages/profiler-php-performance-online-by-xhprof http://www.ituring.com.cn/article/132392 http://www.ituring.com.cn/article/133062?utm_source=tuicool[/code]
相关文章推荐
- PHP ECSHOP中 诡异的问题:expects parameter 1 to be double
- php的curl扩展抓取信息——模拟登陆成功却无法抓取页面等问题
- thinkphp的配置文件
- Windows下配置PHP支持LDAP扩展方法(wampserver)
- Windows局域网通过NTP设置时间同步
- phpize简介
- swoole教程第一节:进程管理模块(Process)-中(消息队列)
- php,Yii获取当前url和域名和mysql查询语句
- 使用SeasLog打造PHP项目中的高性能日志组件(一)
- php和Mysql使用insert on duplicate分析
- 使用SeasLog打造PHP项目中的高性能日志组件(一)
- 7.PHP 教程_PHP常量
- PHP文件包含语句
- PHP之Traits
- Yii中CDbCriteria查询条件收集
- QwtPlot画曲线
- Zend_Json 简单介绍 --(手册)
- 给phpcms v9增加远程模型及远程栏目
- phpcms v9 企业黄页系统发布没有表单出现的解决方案
- ThinkPHP 模板 Volist 标签嵌套循环输出多维数组