linux 上xhprof安装与使用(php性能调试)
2017-04-03
服务器
一、下载解压
wget http://pecl.php.net/get/xhprof-0.9.4.tgz
tar zxvf xhprof-0.9.4.tgz
cd xhprof-0.9.4/extension/
二、进入php安装过的目录
phpize 在extension下通过phpize生成configure
三、然后就是配置安装啦
./configure --with-php-config=/Applications/MAMP/bin/php/php5.3.20/bin/php-config
make
make install
注意要是提示: no such file or directory: ./configure 可以先安装 autoconf 生成configure文件
四、新建日志文件夹 (给777权限)
mkdir /var/tmp/xhprof
五、修改php.ini
extension=xhprof.so
exhprof.outout_dir=/var/tmp/xhprof
注:如果是64位系统需要将xhprof.so文件拷贝到相关的lib64的目录下,exhprof.outout_dir的目录要手动创建
六、重启apacache在phpinfo中看xhprof扩展是否加载成功了
七. 将下载的XProf解压的包里面的
xhprof_html目录和xhprof_lib目录 和 XHProf.class.php 复制到服务器要测试性能的网站根目录
八. 安装Graphviz 图形化工具
wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.24.0.tar.gz
tar zxf graphviz-2.24.0.tar.gz
cd graphviz-2.24.0
./configure --with-png=yes
make
make install
安装Graphviz的目的是为了xhprof图形化web工具查看profiling log文件。安装后使用web工具查看log图形时,最常见错误是:
提示如下:
引用
Error: either we can not find profile data for run_id 4d7f0bd99a12f or the threshold 0.01 is too small or you do not have ‘dot’ image generation utility installed.
且编译graphviz提示信息png: No (missing png.h),也就是dot 不支持PNG,所以需要安装libpng包,
wget http://nchc.dl.sourceforge.net/project/libpng/libpng15/1.5.1/libpng-1.5.1.tar.gz
tar zxf libpng-1.5.1.tar.gz
cd libpng-1.5.1
./configure
make
make install
然后重新编译安装graphviz,加上参数--with-png=yes。完成后,应确保命令dot在PATH环境变量里(默认应该就在路径里,一般不需要特别设置),以便XHProf能找到它。
-----------------------------------------------------------------
XHPROF 名词解释
主要的
Inclusive Time (或子树时间):包括子函数所有执行时间。
Exclusive Time/Self Time:函数执行本身花费的时间,不包括子树执行时间。
Wall时间:花去了的时间或挂钟时间。
CPU时间:用户耗的时间+内核耗的时间
表单中的
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% 峰值百分比