facebook的php性能分析工具--xhprof

Cleey 发布于 2016/01/04 15:31
阅读 2K+
收藏 4

华为云11月刊推送:DIY微信问答机器人,高性能计算代码的20个技巧!>>>

原文链接:http://www.cleey.com/blog/single/id/439.html

pecl安装看这里:http://www.cleey.com/blog/single/id/816.html

xhprof为facebook的php性能分析工具xhprof安装,这里我先贴出大致的步骤:

1.获取xhprof

2.编译前预处理

3.编译安装

4.配置php.ini

5.查看运行结果

那么下面我们开始安装xhprof工具吧:

1.获取xhprof可以输入网址直接下载,或者wget

#wget http://pecl.php.net/get/xhprof-0.9.4.tgz   #tar zxf xhprof-0.9.4.tgz

2.编译前预处理在编译xhprof之前,先做一下预处理,生成configure文件;

#cd xhprof-0.9.4  #cd extension  #phpize

phpize 没有这个命令用来扩展php扩展模块phpize是属于php-devel的内容,所以只要运行yum install php-devel就行。命令:yum install php-devel -y位置:/usr/bin/phpize

3.编译安装

#./configure --with-php-config=/usr/bin/php-config  #make && make install

安装成功

4.配置php.ini在php的配置文件后面追加,xhprof扩展,php.ini

[xhprof]  extension=xhprof.so;  xhprof.output_dir=/usr/share/nginx/html/tmp/xhprof

注:如果是64位系统需要将xhprof.so文件拷贝 /lib64的目录下

#cp /usr/lib64/php/modules/xhprof.so /lib64/

5.查看运行结果将实例拷贝到自己到web目录下,进行实例演示:

#cp -r examples xhprof_html xhprof_lib /usr/share/nginx/html/xhprof

a.运行实例查看效果,在浏览器输入http://localhost/xhprof/examples/sample.phpresultb.复制上面到运行到结果(http路径),再次放入浏览器,填好前面对应的域名:http://localhost/xhprof/xhprof_html/index.php?run=5307089e3e0fe&source=xhprof_foos查看结果,正确:view如果输入浏览器没有数据这种情况:Run #530707980ee18: Invalid Run Id = 530707980ee18错误结果:error可能是你的配置权限不足,请给个权限,可以直接777,然后重新运行走后这个步骤看看效果。到这里xhprof安装就结束了,开始你的性能优化之旅吧,有了这个工具会事半功倍的~~对于xhprof的名词解释:

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% 峰值百分比


错误处理:

failed to execute cmd: " dot -Tpng". stderr: `sh: dot: command not found '

原因:未安装图形化工具

yum install graphviz //centos  brew install graphviz //mac

界面优化:XHProf UI 分支

原文链接:http://www.cleey.com/blog/single/id/439.html 专注技术分享

加载中
0
梦想岛
梦想岛
装个xdebug就好了。有必要这么麻烦吗?
eechen
eechen
回复 @Cleey : xhprof的最大特点是减少线上调试对性能的影响,线下调试完全可以用xdebug.另外Facebook已经放弃维护xhprof了,把精力放到HHVM上了.而xdebug从2.4开始已经支持PHP7了,哪个有前途,一目了然.https://pecl.php.net/package/xdebug
Cleey
Cleey
我只能呵呵了,一个是调试工具,一个是性能分析工具能一样么。
0
eechen
eechen
谁说Xdebug不能进行性能分析?Xdebug是最全面的PHP调试和性能分析工具,没有之一.xdebug.profiler输出的信息cachegrind.out使用kcachegrind查看也可以看到PHP函数调用关系和耗时.

PHP内置的一些魔术常量:
http://php.net/manual/zh/language.constants.predefined.php
__LINE__,__FILE__,__FUNCTION__,__CLASS__
查看xdebug扩展包含的函数:
php -r 'print_r(get_extension_funcs("xdebug"));'
http://www.xdebug.org/docs/all_functions
xdebug_get_stack_depth
xdebug_get_function_stack
xdebug_get_formatted_function_stack
xdebug_print_function_stack 显示当前函数栈,内容包括各个函数的CPU和内存变动
xdebug_get_declared_vars
xdebug_call_class
xdebug_call_function
xdebug_call_file
xdebug_call_line
xdebug_var_dump
xdebug_debug_zval
xdebug_debug_zval_stdout
xdebug_enable
xdebug_disable
xdebug_is_enabled
xdebug_break
xdebug_start_trace
xdebug_stop_trace
xdebug_get_tracefile_name
xdebug_get_profiler_filename
xdebug_dump_aggr_profiling_data
xdebug_clear_aggr_profiling_data
xdebug_memory_usage
xdebug_peak_memory_usage
xdebug_time_index
xdebug_start_error_collection
xdebug_stop_error_collection
xdebug_get_collected_errors
xdebug_start_code_coverage
xdebug_stop_code_coverage
xdebug_get_code_coverage
xdebug_code_coverage_started
xdebug_get_function_count
xdebug_dump_superglobals
xdebug_get_headers
0
Koma
Koma
你做这块儿相关的业务,代码性能哪里慢哪里快你自己还不清楚?为什么慢你不知道?分析有卵用,老老实实多看看你管的那些代码吧~
返回顶部
顶部