本文共 2596 字,大约阅读时间需要 8 分钟。
cd xhprof/extension/phpize#这里用的是lnmp1.7集成环境./configure --with-php-config=/usr/local/php/bin/php-configmakemake install、 修改php.ini配置 vim /usr/local/php/etc/php.ini[xhprof]extension=xhprof.so;xhprof.output_dir=/tmp/xhprof#其中 xhprof.output_dir 是 xhprof 的输出目录,每次执行 xhprof 的 save_run 方法时都会生成一个 run_id.project_name.xhprof 文件。这个目录在哪里并不重要。注意此路径的权限要可读写!!否则文件无法生成成功
5.重启lnmp lnmp restart
到此扩展安装完成
用php --ri xhprof查看扩展是否生效
查看是否添加用phpinfo();
6.添加虚拟主机,为xhprof扩展提供显示支持
Lnmp vhost add
域名:
目录:/home/wwwroot/xhprof/xhprof_html
vim /usr/local/nginx/conf/vhost/www.xhprof.com.conf
错误日志和日志开启,以便发生错误查看问题//注意最好提前建好目录
到此虚拟主机添加完成
7.将xhprof相关文件复制到虚拟主机目录中
cp -R /home/wwwroot/default/xhprof/xhprof_html/* /home/wwwroot/xhprof/xhprof_html/
cp -R /home/wwwroot/default/xhprof/xhprof_lib /home/wwwroot/xhprof/
到此xhprof已经完成搭建,现在访问后续可能会出问题,到后面讲解。
//测试开始打点
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
//测试结束打点
$xhprof_data = xhprof_disable();
//引入相关文件,其中路径根据自己的更改。主要引入xhprof_lib.php和xhprof_runs.php两个文件,
//这两个文件在前期下载的安装中,自行放到项目目录中以便引入
include_once "/home/wwwroot/default/application/library/ThirdParty/xhprofdir/xhprof_lib.php";
include_once "/home/wwwroot/default/application/library/ThirdParty/xhprofdir/xhprof_runs.php";
$xhprof_runs = new \XHProfRuns_Default();
$run_id = $xhprof_runs->save_run($xhprof_data, 'your_project');
//打印生成相关的id,根据这个id查看测试性能结果
var_dump($run_id)
2.访问首页进行测试
得到id值
3.访问xhprof的虚拟主机
4.点击对应的文件
5.点击[View Full Callgraph]查看图形化结果
查看错误日志
tail -5 /home/wwwroot/xhprof/logs/error.log
主要报错信息:open_basedir restriction in effect.
此时去php.ini中查看发现open_basedir注释着
一番查找发现 fastcgi.conf中有相关设置
vim /usr/local/nginx/conf/fastcgi.conf
将上面框出来的地方修改成自己的对应的目录 原来的注释掉,自己的写在下面
保存退出 重启 lnmp
访问正常!!
2.访问xhprof点击[View Full Callgraph]查看报错failed to execute cmd: " dot -Tpng"
原因一:未安装graphviz
如果看到 sh: dot: command not found ,说明服务器上没有安装画图软件graphviz
yum安装: yum install graphviz
原因二:php.ini设置了禁用proc_open方法
如果安装好了graphviz,仍然出现”failed to execute cmd”,检查下服务器上的php.ini中disable_functions这项是不是限制了proc_open,因为在xhprof_lib/utils/callgraph_utils.php的xhprof_generate_image_by_dot中使用了proc_open函数,
删除proc_open,保存退出,重启lnmp 就解决了
A、表格分析时,需要注意的指标
funciton name : 函数名
calls: 调用次数
Incl. Wall Time (microsec): 函数运行时间(包括子函数) 单位微秒
IWall%:函数运行时间(包括子函数)占比
Excl. Wall Time(microsec):函数运行时间(不包括子函数) 单位微秒
EWall%:函数运行时间(不包括子函数)
B、图形分析时,需要注意的地方
红框是消耗资源占用比例最高的地方,需要着重看,根据具体数值,选择性进行优化。
黄色是消耗资源占用比例稍高的地方,根据具体数值,选择性优化。
白色是消耗资源占用比例一般的地方,基本不需要处理,不过也要根据具体数值分析。
转载地址:http://xmodb.baihongyu.com/