tideways+xhgui搭建php 7的特性测试环境

前言

自己事先使用的凡xhprof+xhgui浅析线达环境的性质,不过PHP本升级到PHP 7之后,xhprof都休可用,于是改用tideways+xhgui,那实则为是PHP7下开源方案的唯一拔取,有趣味之只是看下参考资料[2],有详细表达。

本文紧要依照参考资料[1]布置,因而会暴发恢宏又的地点,我要其基础及冲实际生产条件之要求多加加了坐下额外部署:

  • mongodb仅仅绑定到本地
  • xhgui开启HTTP Basic认证
  • xhguimongodb中只保留如今14龙的多寡

系统环境

CentOS 7.3 + nginx + mysql + php71

本文假要你的lnmp环境已足以健康下,并且是经源码安装PHP,现在单独是需要丰硕性能测试的效应。假诺你不熟习lnmp环境的安排,推荐用https://lnmp.org/提供的同等键安装包,本文的布置路径都冲该包的默认配置。

设置与布局

分成以下多少个组成部分:

  1. mongodb
  2. tideways
  3. xhgui
  4. 使用配置

1.mongodb

安装

#yum install mongodb-server mongodb -y
#pecl install mongodb

启动mongodb服务

#mongod --bind_ip 127.0.0.1 

2.tideways

类主页:https://github.com/tideways/php-profiler-extension

安装

git clone https://github.com/tideways/php-profiler-extension.git
cd php-profiler-extension
phpize
./configure --with-php-config=`which php-config` 
make
sudo make install

配置

编辑php.ini文件,添加:

extension=tideways.so
tideways.auto_prepend_library=0

重启php-fpm,执行以下命令看到tideways的出口表示有收效:

#php -m | grep tide
tideways

3.xhgui

xhgui呢是一个网站,最后要经web访问。官方版是英文版,已经不更新了,有诸多BUG,这里推荐使用粤语版:https://github.com/maxincai/xhgui

安装(假设在/home/wwwroot/目下实施如下命令)

$ git clone https://github.com/maxincai/xhgui.git
$ cd xhgui
$ php install.php

配置

1.给数据库添加索引,非要,然而强烈推荐:

$ 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 } )

2.nginx配置(xhgui自己没有安全部制,它捕捉的数中爆发锐敏数据,因而开放到外网后要开启HTTP
Basic认证

创建/usr/local/nginx/conf/vhost/xhgui.conf文件,内容如下:

server
{
    listen 8888; # 根据实际情况改成自己的端口
    server_name 127.0.0.1; #根据实际情况改成自己的域名
    index index.html index.htm index.php;
    root  /home/wwwroot/xhgui/webroot/;

    location ~ \.php
    {
        auth_basic "xhgui needs authentication"; # 开启HTTP Basic认证
        auth_basic_user_file htpasswd;  # 密码文件
        try_files $uri =404;
        fastcgi_pass  unix:/tmp/php-cgi.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

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

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
        expires      30d;
    }

    location ~ .*\.(js|css)?$ {
        expires      30d;
    }

    access_log  /home/wwwlogs/xhgui.access.log;
    error_log  /home/wwwlogs/xhgui.error.log;
}

开启HTTP Basic认证得扭转密码文件htpasswd。倘若生成一个tester用户,密码为123456,则行以下命令:

printf “tester:$(openssl passwd -crypt 123456)\n" >> /usr/local/nginx/conf/htpasswd 

转移后记得检查下文件内容,格式内容应接近如下:

$cat /usr/local/nginx/conf/htpasswd 
tester:1qe8kAN82iOyo

完成布置更开,在浏览器被入http://127.0.0.1:8888,应该力所能及来看界面了,只是这还未曾数量。

3.越来越优化布局

xhgui
默认是依1%采集的,然而即便排查问题时常要么要能100%采集会相比较好。进入xhgui源码目录,修改config/config.default.php文本,通常照例坚守1%底采样率采样,制止数据增长了不久,当思调试时,就在URL中添加debug=1的参数即可。

config/config.default.php中,找到profiler.enable这里,按如下修改:

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

若不删采集的数,很快即会面发觉mongo数据库变得生相当。因而推荐配置下mongo数据库,只保留目前14龙之多少。

#mongo
> use xhprof
> db.results.ensureIndex( { "meta.request_ts" : 1 }, { expireAfterSeconds : 3600*24*14 } )

使想手动全部删减,则履行如下命令:

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

4.利用配置

给用实现集,需要改对应之nginx配备文件,添加:

fastcgi_param TIDEWAYS_SAMPLERATE “100"; #是否采样取决于xhgui的随机数配置和这里的采样率配置,两者必须同时满足,这里简单设置成100,由xhgui去控制
fastcgi_param PHP_VALUE "auto_prepend_file=/home/wwwroot/xhgui/external/header.php";

完整的nginx示范配置文件如下:

server
{
    listen 80; #根据实际情况修改
    server_name test.dev; #根据实际情况修改
    index index.html index.htm index.php;
    root  /home/wwwroot/test/web/;

    location ~ \.php
    {
        fastcgi_pass  unix:/tmp/php-cgi.sock;
        fastcgi_index /index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param TIDEWAYS_SAMPLERATE "100”; # 此处为重点
        fastcgi_param PHP_VALUE "auto_prepend_file=/home/wwwroot/xhgui/external/header.php”; # 此处为重点
        include fastcgi_params;
    }

    try_files $uri $uri/ @rewrite;
    location @rewrite {
        rewrite ^/(.*)$ /index.php?_url=/$1;
    }

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
        expires      30d;
    }

    location ~ .*\.(js|css)?$ {
        expires      30d;
    }

    access_log  /home/wwwlogs/test.access.log;
    error_log  /home/wwwlogs/test.error.log;
}

末段水到渠成安排并采访到数量的界面

图片 1

参考

  1. PHP性能被动分析工具的xhgui加tideways的装置实践
  2. Profiling Drupal: XHprof, Uprofiler, Tideways with PHP7 on Linux
    and
    Windows
  3. nginx用户征配置

相关文章