Thinkphp5框架调优

1.生成缓存文件

  • 生成自动加载缓存:

指令执行成功后,会在rumtime目录下面生成classmap.php文件,生成的类库映射文件会扫描系统目录和应用目录的类库。

  • 生成配置文件缓存:

默认生成应用的配置缓存文件,调用后会在runtime目录下面生成init.php文件,生成配置缓存文件后,应用目录下面的config.phpcommon.php以及tags.php不会被加载,被runtime/init.php取代。

  • 生成数据表字段缓存:

可以通过生成数据表字段信息缓存,提升数据库查询的性能,避免多余的SHOW COLUMNS 查询语句

datebase.php 里面设置 debug 为 false  才能生效

  • 生成路由映射缓存:

路由映射缓存用于开启路由延迟解析的情况下,支持路由反解的URL生成,如果你没有开启路由延迟解析或者没有使用URL路由反解生成则不需要生成。

参考文档:https://www.kancloud.cn/manual/thinkphp5_1/354145

ps:代码更新后记得更新缓存文件

 

Xhgui+Tideways 的使用

Tideways

将应用程序性能带出黑暗

不断分析您的应用程序的性能,使您能够找到性能欠佳的区域并从根本上进行修复

安装Tideways  PHP扩展

项目地址:https://github.com/tideways/php-xhprof-extension

编译安装:

配置PHP.ini  文件

[tideways_xhprof]
extension=c_xhprof.so
;不需要自动加载,在程序中控制就行
tideways.auto_prepend_library=0
;频率设置为100,在程序调用时能改
tideways.sample_rate=100

查看tideways 扩展是否安装

1.phpinfo()

2.php -m | grep tideways

xhgui

安装xhgui

安装依赖:

1.mongodb

2.composer

中文项目地址:https://github.com/laynefyc/xhgui-branch

配置文件目录:

xhprof_gui/config

安装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 } )

在需要分析的项目代码执行前引入文件

include "/xhgui/external/header.php";

设置查看分析记录web站点

server {
    listen   80;
    server_name  xhgui.kj120.cn;

    # root directive should be global
    root   /Users/birjemin/Developer/Php/xhprof_gui/webroot;
    index  index.php;

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

    location ~ \.php$ {
        try_files       $uri =404;
        include         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();

     

  • mongoDb报错这是一个bug(issue),请按照这个方法修改相应文件。替换掉这段代码

参考文档:

https://segmentfault.com/a/1190000013322461?utm_source=tag-newest

http://blog.it2048.cn/article-tideways-xhgui/

php 使用xhprof 性能分析

安装git hub 下载源码:https://github.com/longxinH/xhprof

先解压

cd xhprof/extension/

phpize

./configure

make &&
make install

配置php.ini 文件加载xhprof扩展

xhprof.output_dir  分析文件保存路径

执行

php -m | grep xhprof

可以看见输出,说明php扩展安装成功,然后重启Apache或者php-fpm

简易示例:

Thinkphp5 框架使用xhprof

在application/tags.php配置行为扩展文件

zabbix系统 源码安装

1、下载源码包

# wget -O zabbix-3.4.2.tar.gz http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.4.2/zabbix-3.4.2.tar.gz/download

2、安装依赖库

# yum -y install net-snmp-devel libxml2-devel libcurl-deve libevent libevent-devel

3、解压并编译

# tar -zxf zabbix-3.4.2.tar.gz
# cd zabbix-3.4.2
# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2

4、安装

# make && make install

5、创建zabbix用户和用户组

# groupadd zabbix
# useradd -r -g zabbix zabbix
# cd /usr/local && chown -R zabbix:zabbix zabbix

6、创建zabbix数据库,并导入表结构

复制代码
# mysql -uroot -p
mysql> create database if not exists zabbix default character set utf8 collate utf8_general_ci;
mysql> use zabbix;
mysql> source /tmp/zabbix-3.4.2/database/mysql/schema.sql;
mysql> source /tmp/zabbix-3.4.2/database/mysql/images.sql;
mysql> source /tmp/zabbix-3.4.2/database/mysql/data.sql;
复制代码

7、创建日志目录

# cd /usr/local/zabbix
# mkdir logs
# chown zabbix:zabbix logs

8、修改zabbix_server.conf

复制代码
# vim ./etc/zabbix_server.conf

LogFile=/usr/local/zabbix/logs/zabbix_server.log
PidFile=/tmp/zabbix_server.pid
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBSocket=/tmp/mysql.sock
Include=/usr/local/zabbix/etc/zabbix_server.conf.d/*.conf
复制代码

9、修改zabbix_agent.conf

# vim ./etc/zabbix_agentd.conf

PidFile=/tmp/zabbix_agentd.pid
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.con

10、启动zabbix_server 和 zabiix_agent服务

# /usr/local/zabbix/sbin/zabbix_server
# /usr/local/zabbix/sbin/zabbix_agent

PS:如果再启动的时候报错:error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory

解决方法:

# ln -s /usr/local/mysql/lib/libmysqlclient.so.20 /usr/lib/
# ldconfig

然后再次启动服务

11、拷贝WEB应用程序,/data/html为nginx或者Apache的运行PHP程序的目录

# mv /tmp/zabbix-3.4.2/frontends/php/ /data/html/zabbix
# chown -R www:www /data/html/zabbix

12、访问zabbix:http://ip/zabbix/index.php,初始化安装的默认账号:Admin,密码:zabbix

configure: error: Cannot find ldap libraries in /usr/lib 解决办法

configure: error: Cannot find ldap libraries in /usr/lib

解决办法:

cp -frp /usr/lib64/libldap* /usr/lib/