入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

linux(centos)下编译安装php性能测试工具xhprof笔记

创建时间:2012-09-26 投稿人: 浏览次数:2113


原文:http://www.phpwebgo.com/2012/04/29/243.html

一、安装xhprof:

wget http://pecl.php.net/get/xhprof-0.9.2.tgz
 
tar zxvf xhprof-0.9.2.tgz
 
cd xhprof-0.9.2
 
mkdir /home/wwwroot/xhprof
 
cp -r xhprof_html xhprof_lib /home/wwwroot/xhprof/
 
cd extension/
 
/usr/local/php/bin/phpize
 
./configure --with-php-config=/usr/local/php/bin/php-config
 
make && make install
 
vim /usr/local/php/etc/php.ini
 
extension = "xhprof.so"
 
xhprof.output_dir=/home/wwwlogs/xhprof
 
 mkdir /home/wwwlogs/xhprof
 
 chmod 777 -R /home/wwwlogs/xhprof/
 
/etc/init.d/php-fpm restart
 
/etc/init.d/nginx restart


二、安装画图工具graphviz

wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.24.0.tar.gz
 
 tar zxvf graphviz-2.24.0.tar.gz
 
cd graphviz-2.24.0
 
./configure
make && make install

三、如何使用

xhprof_enable(); // 统计的代码部分之前加,如果要显示CPU占用 可以加入XHPROF_FLAGS_CPU参数,内存是XHPROF_FLAGS_MEMORY,如果两个一起:XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY,如:xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);

xhprof_disable();//统计的代码部分之后加

这样xhprof就可以统计当前页面的函数性能情况了。xhprof会把每次访问加入统计代码的页面的性能统计结果在指定目录下生成一个文件,文件名命名方式为:本次访问的系统ID.命名空间,每次刷新页面都会重新生成一个文件,每个的系统ID都不同。

<?php
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
$xhprof_on = true;
$obj = new getlocationip("./qqwry.dat");
for($i=0;$i<1000;$i++)
{
    echo $ip = rand(10,255).".".rand(1,255).".".rand(1,255).".".rand(1,255);
    $address = $obj->find($ip);
    $str = $address ["0"].$address ["1"];
    echo $str."<hr>";
}
if($xhprof_on){
    $xhprof_data = xhprof_disable();
    $xhprof_root = dirname(__FILE__)."/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, "hx");
    echo "<a href="http://xxx.xxx.xxx.xxx/xhprof/xhprof_html/index.php?run=".$run_id."&source=hx" target="_blank">统计</a>";
 }



名词:
1. Inclusive Time :包括子函数所有执行时间。
2. Exclusive Time/Self Time:函数执行本身花费的时间,不包括子树执行时间。
3. Wall Time:花去了的时间或挂钟时间。
4. CPU Time:用户耗的时间+内核耗的时间
5.Inclusive CPU:包括子函数一起所占用的CPU
6.Exclusive CPU:函数自身所占用的CPU

 

然后通过xhprof_html目录的http访问url来查看结果。如:http://app/xhprof_html/?run=运行id&source=命名空间(其中运行ID和命名空间可以根据xhprof生成的文件名来确定)


在生产环境可以按访问多少个用户来开启,比如1000个访问有一次的统计

后续:

比如xhprof的profile日志以文件形式保存到服务器,需要定时清理;查看时需要一个一个查看不太方便;由于xhprof生成的profile是一个大数组,所以保存到文件时使用了标准的php serialize,日志文件偏大,磁盘空间以及serialize存在效率问题(CPU 很high)

一些思路:可以把日志单独放到一台日志服务器上或者存入到MySQL数据库持久化存储,以后统计起来也比较方便:)


声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
  • 上一篇:没有了
  • 下一篇:没有了
未上传头像