mac PHP性能测试 tideways + xhgui+ nginx + php7

前言:

    由于工作中需要对数据量较大的数据表进行操作时,出现504 time-out报错。于是在开始搭建tideways + xhgui。

我的系统环境:

    mac+ +tideways + xhgui+ nginx + php7

搭建过程:

    1.安装mongo:(https://www.jianshu.com/p/2d0a1ecd0c82)

        安装:brew install mongo(如果没成功,brew search mongo搜下) 

        修改环境变量: 作用是把mongo/bin加入$path,以免每次都输入sudo mongo 

$ touch .base_profile
$ vim .base_profile

        加入path:

export MONGO_PATH=/usr/local/mongodb
export PATH=$PATH:$MONGO_PATH/bin
        启动服务端:(mongod.conf文件中bindIp: 127.0.0.1意思是本机访问,如果是外网访问需要重新设置)
mongod --config /usr/local/etc/mongod.conf
        如果要修改数据库路径:输入
mongod --dbpath 路径

    2.安装PHP mongodb扩展

        注意点:是mongodb的扩展,不是mongo扩展

        注意版本。后面下载的xhgui对mongo扩展的版本有要求。

        在网上他们都是用brew install php70-mongo之类。但是我brew search也没有,还是乖乖make吧。

        下载mongodb扩展包:(我下载的是mongo-1.4.2但是后面执行显示版本太高了。于是就下砸了mongo-1.4.0)

cd
wget http://pecl.php.net/get/mongodb-1.4.0.tgz
tar -zxvf mongodb-1.4.0.tgz
cd mongodb-1.4.0
phpize
./configure --with-php-config=你的php-config路径 我的是在/usr/local/Cellar/php@7.1/7.1.16_1/bin/php-config
make
make install

    3.安装tideways扩展:

git clone https://github.com/tideways/php-profiler-extension.git
cd php-profiler-extension
phpize
./configure --with-php-config=你的php-config路径
make(执行这行报错于是重来)
---------------------------------------
git clone https://github.com/tideways/php-profiler-extension.git
cd php-profiler-extension
phpize
./configure --with-openssl-dir=你的openssl路径(我的路径/usr/local/opt/openssl@1.0)
make 
make install

        配置php.ini:

extension=tideways.so
tideways.auto_prepend_library=0
extension=mongodb.so

        重启php-fpm即可(可以使用php -m查看是否安装了mongodb和tideways扩展)

    下载项目:

        直接使用的是:https://github.com/maxincai/xhgui但是这个7.1之后执行就会报错了。所以就找了另外一个链接

git clone https://github.com/perftools/xhgui.git
cd xhgui
php install.php(看下是否有vendor这个目录)

        mongo添加索引:

$ 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.ensureInd
    xhgui 默认是采集1% ,如果是排查问题时还是希望能够100%采集会比较方便。进入xhgui源码目录,修改config/config.default.php文件,
平时仍然按1%的采样率采样,防止数据增长过快,当想调试时,就在URL中添加debug=1的参数即可。

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

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

    在你要查看的项目nginx配置 修改配置:我的目录在/usr/local/etc/nginx/vhost/adb.conf

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

执行:

    php -S 0:8080 -t webroot(如果你的8080端口有被占用,换个端口即可,我监听的是5678)

    访问:127.0.0.1:5678即可(你在访问abd.com的时候。就可以看到127.0.0.1:5678页面中性能了)

错误归纳:

    1.安装版本不对:(我安装的是mongo 而不是mongdb)

zend_object_value php_mongoclient_new(zend_class_entry *class_type TSRMLS_DC);
    2.openssl不对。phpize之后./configure --with-openssl-dir即可
make: *** [src/libmongoc/src/mongoc/mongoc-crypto-openssl.lo] Error 1
    3.下载xhgui不支持7
Uncaught ErrorException: Function mcrypt_module_open() is deprecated
    4.最后一个是php install   composer不能生成vendor文件。使用composer update发现我的mongo扩展版本太高了


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值