资讯专栏INFORMATION COLUMN

PHP性能被动分析工具之xhgui加tideways的安装实践

Chiclaim / 2700人阅读

摘要:性能被动分析工具之加的安装实践前言最近一直想做个接口性能分析,但是手打实在能把人给累死。怎么办呢想到之前有写过一篇我所知道的相关调优汇总,里面有一个的调优方式。但是使用它酷炫的需要付费,扩展则不需要。

PHP性能被动分析工具之xhgui加tideways的安装实践

By:0x584A Date:2016-11-23 17:55:42

前言

最近一直想做个接口性能分析,但是手打log实在能把人给累死。怎么办呢?想到之前有写过一篇我所知道的PHP相关调优汇总,里面有一个Xdebug + kcachegrind的调优方式。 但是呢,每次都需要将它产生的cachegrind.out.*文件下到本地,再用kcachegrind打开做分析,而且体验感也不是特别好(原谅我英语不过三的渣渣...)

性能分析的UI组合

uprofiler 点击下载

xhprof + xhprof.io 【因年久失修,用uprofiler替换即可或用修复板。支持保存分析数据至mysql,函数调用记录完整,内核级别函数都能显示,支持域名索引】修复板下载

xhprof or uprofiler or tideways + xhgui 【推荐,保存数据至MongoDB,UI界面友好,有中文UI版,不支持域名索引对于线上调试支持较差】中文版下载,英文原版下载

tideways【推荐,这个最绚的而且一直在持续维护。但是使用它酷炫的UI需要付费,扩展则不需要。】tideways下载地址

安装

环境

tideways + xhgui

php>5.5

mongodb

php5-mcrypt

apt-get install libcurl4-openssl-dev libpcre3-dev

安装mongodb

前置需安装php-dev`sudo apt-get install php5-dev`

```shell
$ sudo pecl install mongodb
 $ cd /etc/php5/mods-available
 $ sudo sh -c "echo "extension=mongodb.so" > /etc/php5/mods-available/mongodb.ini"
 [sudo] 0x584A 的密码:
 $ cd ../fpm/conf.d
 $ sudo ln -s ../../mods-available/mongodb.ini 20-mongodb.ini
 $ sudo service php5-fpm restart
 $ sudo apt-get install mongodb -y
```

安装xhgui

$ git clone https://github.com/maxincai/xhgui.git
 $ cd xhgui
 $ php install.php
加索引
$ mongo
 > use xhprof
 > db.results.ensureIndex( { "meta.SERVER.REQUEST_TIME" : -1 } )
 > db.results.ensureIndex( { "profile.main().wt" : -1 } )
 > db.results.ensureIndex( { "profile.main().mu" : -1 } )
 > db.results.ensureIndex( { "profile.main().cpu" : -1 } )
 > db.results.ensureIndex( { "meta.url" : 1 } )

安装tideways

见该安装地址,选择系统安装方式`https://tideways.io/profiler/docs/setup/installation`

需要在nginx应用中加入fastcgi_param TIDEWAYS_SAMPLERATE "25";

需要在nginx应用中加入fastcgi_param PHP_VALUE "auto_prepend_file=/home/0x584A/www/xhgui/external/header.php";

ngxin应用配置

应用
server {
    listen 127.0.10.1:80;
    server_name  app.com;
    root   /home/0x584A/www/app;
    index  index.html index.htm index.php;

    location / {
        if (!-e $request_filename) {
            rewrite ^(.*)$ /index.php?$1 last ;
            break;
        }
    }

    location ~ ^(.+.php)(.*)$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index   index.php;
        fastcgi_split_path_info         ^(.+.php)(.*)$;
        fastcgi_param TIDEWAYS_SAMPLERATE "25";
         fastcgi_param PHP_VALUE "auto_prepend_file=/home/0x584A/www/xhgui/external/header.php";
        fastcgi_param       PATH_INFO                $fastcgi_path_info;
        fastcgi_param       PATH_TRANSLATED        $DOCUMENT_ROOT$fastcgi_path_info;
        fastcgi_param       SCRIPT_FILENAME  $DOCUMENT_ROOT/$fastcgi_script_name;
        include             fastcgi_params;
    }
}
xhgui
server {
        listen 127.0.10.2:80;
        server_name  debug.com;
        root   /home/0x584A/www/xhgui/webroot;
        index  index.html index.htm index.php;

    location / {
        try_files $uri $uri/ /index.php?$uri&$args;
    }

    location ~ .php$ {
        try_files $uri =404;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass    127.0.0.1:9000;
        fastcgi_index   index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

访问配置好的页面即可。

注意

分析方式请自行更具url设置

"profiler.enable" => function() {
    // url 中包含debug=1则百分百捕获
    if(!empty($_GET["debug"])){
        return True;
    }else{
        // 1%采样
        return rand(1, 100) === 42;
    }
},

在xhgui的config/config.default.php中,可设置采样命中次数;

return rand(1, 100) === 42;1%的采样率,改成return True;则标识每次都采样

分析参数过多则清除mongodb数据

$ mongo
  $ use xhprof;
  $ db.dropDatabase();

终极特效

参考

使用xhprof进行线上PHP性能追踪及分析

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22064.html

相关文章

  • 使用XHProf分析PHP性能瓶颈(二)

    摘要:上一篇文章里,我们介绍了如何基于扩展来分析性能,并记录到日志里,最后使用扩展自带的在里展示出来。本次测试中,实际使用了扩展切换为扩展后里看不到数据,原因未知。虽然来自但已经很久不更新,官方源已经显示此包已废弃,不再维护。 上一篇文章里,我们介绍了如何基于xhprof扩展来分析PHP性能,并记录到日志里,最后使用xhprof扩展自带的UI在web里展示出来。本篇文章将讲述2个知识点: ...

    Worktile 评论0 收藏0
  • DockerLNMP一键安装开发环境 + PHP非侵入式监控平台xhgui(优化系统性能、定位Bu

    摘要:的一键安装开发环境非侵入式监控平台优化系统性能定位的神器之前在用做本地开发环境,因为没有这些对程序性能追踪及分析的工具,所以索性基于的编排了一套自己使用。 DNMP PLUS dnmp = Docker + Nginx + MySQL + PHP + Redis + MongDB plus = xhgui + xhprof + tideways dnmp-plus = PHPer 的一...

    AlanKeene 评论0 收藏0
  • DockerLNMP一键安装开发环境 + PHP非侵入式监控平台xhgui(优化系统性能、定位Bu

    摘要:日志日志是我们用得最多的日志,所以我们单独放在根目录下。会目录映射容器的目录,所以在配置文件中,需要输出的位置,我们需要配置到目录,如日志因为容器中的使用的是用户启动,它无法自行在下的增加日志文件。 DNMP PLUS dnmp = Docker + Nginx + MySQL + PHP + Redis + MongDB plus = xhgui + xhprof + tideway...

    luzhuqun 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<