XHProf 简介
XHProf 是一个轻量级的分层性能测量分析器。 可以追踪一个请求程序内部各函数的调用次数,消耗时间以及资源占用等信息,是我们进行性能分析的利器。[^1]
[^1]: 具体介绍见 PHP官方文档
XHProf 安装
首先要安装个extension xhprof.so 并且配置启用,由于我用的环境默认带了,这里不具体描述
装完so之后还要down下xhprof的php lib 文件,可以直接1
git clone https://github.com/phacility/xhprof.git
把这个目录丢到webroot里面(便于之后访问分析结果文件)或者其他地方都行
XHProf 使用
主要是在需要进行性能分析的地方 include xhprof的代码,enable 然后disable下,记录下调用情况;AP程序可以残暴点 直接写在index.php 里面,具体示例代码如下
1 |
|
XHProf结果分析
直接在浏览器里面打开xhprof_html的页面,如果不是用web服务器配置的话,可以简单点直接在xhprof 同层目录里面 php -S 0.0.0.0:8888 然后访问 http://hostname:8888/xhprof/xhprof_html/
下面是页面中各字段解释:
我主要用于速度调忧,所以看的比较多的是前几个,调用次数 消耗时间等另外可以看看生成的graph 函数的调用逻辑以及消耗时间,帮助定位问题
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% 峰值百分比