PHP性能调试

2018-01-13 11:09:00来源:oschina作者:麦拂沙人点击

分享
非侵入式注入
全局配置
php.ini:auto_prepend_file、auto_append_file基于站点配置
nginx:fastcgi_param PHP_VALUE "auto_prepend_file=your_file_path";
apache:php_admin_value auto_prepend_file "your_file_path"XHProf

XHProf是Facebook开发的轻量级的分层性能测量分析工具,其通过在程序中前后打点记录数据,从而在函数级别比较时间、内存、CPU等指标。



安装
依赖安装
yum install php-pecl-xhprof
yum install graphviz #图表绘制插件php.ini中调整储存XHProf运行数据的默认目录xhprof.output_dir="/tmp/xhprof"
web服务器启用新主机指向xhprof_html目录,用于图表展现服务
函数报表
函数调用图使用
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY); //开始采集数据
// some php logic ...
$xhprofData = xhprof_disable(); //结束采集,返回数组结果include_once 'xhprof_lib/utils/xhprof_lib.php';
include_once 'xhprof_lib/utils/xhprof_runs.php';
$xhprofRuns = new XHProfRuns_Default();
$source = 'my_source';
$run = $xhprofRuns->save_run($xhprofData, $source);
# 直接访问http://localhost/xhprof_html/index.php 或者如下 单次分析
sprintf('http://localhost/xhprof_html/index.php?run=%s&source=%s', $run, $source);
Tideways

兼容XHProf的分层性能测量分析工具,并仍在持续更新维护中(要求PHP >= 7.0)。



安装
安装基础程序
git clone git@github.com:tideways/php-profiler-extension.git
phpize
./configure
make
sudo make install
配置
[tideways]
extension=tideways.so
tideways.auto_prepend_library=0 #自动注入采样库
tideways.sample_rate=100 #采样频率
使用
tideways_xhprof_enable(TIDEWAYS_XHPROF_FLAGS_MEMORY | TIDEWAYS_XHPROF_FLAGS_CPU);
// some php logic
$data = tideways_xhprof_disable();
XHGui

基于MongoDB的XHProf数据UI接口



特性
支持XHProf、Tideways、Uprofiler
更美观的监控界面
支持数据存储mongo
百分比请求采集
低负载
安装
git clone 代码汉化修复版 github.com/laynefyc/xhgui-branch
缓存目录cache权限777
composer install --profile --prefer-dist --optimize-autoloader
mongo拓展yum install php-mongodb,并config/config.php配置mongo连接
web服务器启用新主机指向webroot,并全局注入采样库external/header.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 } )
> db.results.ensureIndex( { 'meta.simple_url' : 1 } )mongo自动清理数据每5天
> use xhprof
> db.results.ensureIndex( { "meta.request_ts" : 1 }, { expireAfterSeconds : 432000 } )
配置
profiler.enable回调函数配置采样频率
profile.simple_url回调函数配置页面聚合方式

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台