使用 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
下载源代码
cd /home/www
git clone https://github.com/dreamans/phpAnalysis.git
cd phpAnalysis
修改配置文件
文件位置:/home/www/phpAnalysis/config/database.php
修改数据库链接信息
数据库需要自己创建
建表语句请见 install.sql
return ['connection' => [
'host' => '127.0.0.1', // 数据库主机名
'port' => 3306, // 数据库端口号
'user' => 'root', // 用户名
'pass' => 'root', // 密码
'db' => 'phpAnalysis', // 数据库名
'tb_prefix' => 'pa_', // 表前缀
],
];
修改 web Server 配置, 以 Nginx 为例
server {
listen 8000;
server_name localhost;
root /home/www/phpAnalysis/public;
index index.html;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
修改 php.ini
; 告诉 PHP 程序在执行前首先调用此文件
auto_prepend_file = /home/www/phpAnalysis/agent/header.php
[tideways]
extension=tideways.so
; 不需要自动加载, 在程序中控制就行
tideways.auto_prepend_library=0
; 频率设置为 100, 在程序调用时能改
tideways.sample_rate=100
重启 php-fpm 进程
如果安装顺利, 此时访问 http://localhost :8000 能看到效果
预览
请求列表
支持按应用实例名称, 请求时段, url 模糊查询筛选列表
请求执行基本信息
请求携带的数据
调用明细
说明
项目处于开发阶段, 权限控制未完成且未做性能优化, 请勿在生产环境中部署, 感谢支持!
来源: https://segmentfault.com/a/1190000013116434