最近工作有些小忙,经常加班,偶尔还会通宵。但最终热门微博“混合流”顺利地全量上线了。可是,从性能角度来说,还是有不少的提升空间的。
下面说下利用 xhprof 来进行 WEB 性能的分析。
安装 xhprof 扩展
官方的文档胜过一切 => http://php.net/xhprof
注意:如果想利用 xhprof 绘图,那么需要将系统默认禁用函数打开。
;disable_functions = phpinfo,system,exec,shell_exec,passthru,proc_close,show_source
部署xhprof的运行环境
经过上面的配置,在你跑过项目后,xhprof 会输出一份报告文件。不过,这份文件的内容是被序列化的数组。所以,需要搭建一个能够读取该数据文件的 WEB 环境。
这里给一份 xhprof 环境的代码:http://pan.baidu.com/s/1bnLvmrl
之后通过访问 xhprof 的环境,你会看到如下报告界面。
xhprof 文件列表(/xhprof_html/list.php)
图标形式的 xhprof 报告(/xhprof_html/index.php)
- Function Name 方法名称
- Calls 被调用次数
- Incl. Wall Time 该函数执行时间(包含内部其他函数调用的时间)
- Excl. Wall Time 该函数执行时间(不包含内部其他函数调用的时间)
流程图形式的xhprof报告(/xhprof_html/callgraph.php)
需要关注的几点:
- 同一方法被过多次的调用(也许是无谓的循环导致的)
- 耗时是否落到了外部接口上(会影响TPS – 每秒请求数量)
- 是否有内存的过多消耗(会影响计算效率)