资讯专栏INFORMATION COLUMN

使用phpAnalysis打造PHP应用非侵入式性能分析器

BDEEFE / 869人阅读

使用phpAnalysis打造PHP应用非侵入式性能分析器,查找PHP性能瓶颈。

什么是phpAnalysis

phpAnalysis是一款轻量级非侵入式PHP应用性能分析器,适用于开发、测试及生产环境部署使用,方便开发及测试工程师诊断性能问题:

通过tideways收集PHP程序单步运行过程中所有的函数调用时间及CPU内存消耗等信息

信息永久存储到MySQL数据库

分析每个请求执行的信息,帮助开发测试人员快速定位性能问题

非侵入式,不需修改项目PHP代码

被动分析器,对性能的影响最小,同时收集足够的信息用于诊断性能问题

当我们发现生产环境的某个接口执行时间特别长时应该怎么做?
直接登录线上机器单步调试?
打大量的log然后分析?

一般我们可以把分析流程拆分为如下几步操作:

分析开发/测试环境下执行是否会慢

分析预发/Mirror环境执行是否会慢

生产环境分析代码执行慢的原因

1,2,3步骤都需要去分析代码,看哪部分执行时间长。如果人工一行代码去排查,需要消耗大量的开发人员的时间并且定位难度很大,于此,phpAnalysis诞生了 :)

安装 准备

依赖的PHP扩展:tideaways, PDO, pdo_mysql, zlib

PHP版本>= 5.4.0

安装phpAnalysis

下载源代码

</>复制代码

  1. cd /home/www
  2. git clone https://github.com/dreamans/phpAnalysis.git
  3. cd phpAnalysis

修改配置文件

</>复制代码

  1. 文件位置:/home/www/phpAnalysis/config/database.php
  2. 修改数据库链接信息
  3. 数据库需要自己创建
  4. 建表语句请见install.sql
  5. return [
  6. "connection" => [
  7. "host" => "127.0.0.1", // 数据库主机名
  8. "port" => 3306, // 数据库端口号
  9. "user" => "root", // 用户名
  10. "pass" => "root", // 密码
  11. "db" => "phpAnalysis", // 数据库名
  12. "tb_prefix" => "pa_", // 表前缀
  13. ],
  14. ];

修改Web Server配置,以Nginx为例

</>复制代码

  1. server {
  2. listen 8000;
  3. server_name localhost;
  4. root /home/www/phpAnalysis/public;
  5. index index.html;
  6. location ~ .php$ {
  7. fastcgi_pass 127.0.0.1:9000;
  8. fastcgi_index index.php;
  9. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  10. include fastcgi_params;
  11. }
  12. }

修改php.ini

</>复制代码

  1. ; 告诉PHP程序在执行前首先调用此文件
  2. auto_prepend_file = /home/www/phpAnalysis/agent/header.php
  3. [tideways]
  4. extension=tideways.so
  5. ;不需要自动加载,在程序中控制就行
  6. tideways.auto_prepend_library=0
  7. ;频率设置为100,在程序调用时能改
  8. tideways.sample_rate=100

重启php-fpm进程

如果安装顺利,此时访问 http://localhost:8000 能看到效果

预览

请求列表

支持按应用实例名称、请求时段、url模糊查询筛选列表

请求执行基本信息

请求携带的数据

调用明细

说明

项目处于开发阶段,权限控制未完成且未做性能优化,请勿在生产环境中部署,感谢支持!

对项目有任何意见建议请提issue https://github.com/dreamans/p...

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

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

相关文章

  • Tideways、xhprof 和 xhgui 打造 PHP 侵入监控平台

    摘要:参考配置添加,告诉程序在执行前要调用的服务或者也可以在修改配置文件,告诉程序在执行前要调用的服务参考链接 showImg(https://segmentfault.com/img/bVbt7t1?w=2880&h=2608); 推荐阅读 Tideways、xhprof 和 xhgui 打造 PHP 非侵入式监控平台 超全的设计模式简介(45种) design-patterns-for...

    shevy 评论0 收藏0
  • Tideways、xhprof 和 xhgui 打造 PHP 侵入监控平台

    摘要:参考配置添加,告诉程序在执行前要调用的服务或者也可以在修改配置文件,告诉程序在执行前要调用的服务参考链接 showImg(https://segmentfault.com/img/bVbt7t1?w=2880&h=2608); 推荐阅读 Tideways、xhprof 和 xhgui 打造 PHP 非侵入式监控平台 超全的设计模式简介(45种) design-patterns-for...

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

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

    AlanKeene 评论0 收藏0

发表评论

0条评论

BDEEFE

|高级讲师

TA的文章

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