介绍
在软件工程中,分析是一种用于在运行时分析应用程序的技术,以便识别应用程序中可能存在的瓶颈和性能问题。它是软件优化的重要资源。分析与基准测试不同,因为它在代码级别分析应用程序,而基准测试旨在分析最终用户所体验的整体应用程序性能。
一个分析器是将收集有关应用程序的详细信息,以便生成统计信息和内存占用率,频率和函数调用的持续时间,时间有见地的数据来响应请求,除其他事项外软件。
XHProf是一个用于分析PHP应用程序的分析器。XHProf由Facebook创建和开源,作为被动分析器,这意味着它将在后台工作,同时对应用程序的性能影响最小,使其适合在生产环境中使用。
XHGui提供了丰富的界面,用于可视化通过XHProf收集的数据。
本教程将向您展示如何安装XHProf和XHGui以分析在Ubuntu 14.04上运行的PHP应用程序。
XHProf目前不支持PHP 7.如果您在服务器上使用PHP 7,则可以尝试使用tideways / php-profiler-extension,它可以作为XHProf的替代品。
先决条件
要遵循本指南,您需要:
当您准备好继续前进时,请使用您的sudo帐户登录您的服务器。
步骤1 – 安装服务器依赖项
如果您在服务器上没有安装pecl,则应立即安装它。我们需要它来同时设置xhprof
和mongo
扩展PHP扩展。
首先,使用以下命令更新包管理器缓存:
$ sudo apt-get update
接下来,我们将安装pecl
与php-pear
包。我们还需要php5-dev
通过安装PHP模块pecl
,并php5-mcrypt
设置XHGui:
$ sudo apt-get install php-pear php5-dev php5-mcrypt
要启用mcrypt
扩展,请运行:
$ sudo php5enmod mcrypt
最后,我们需要Git来安装XHGui。如果您的服务器上尚未安装Git,您现在可以使用以下命令安装:
$ sudo apt-get install git
第2步 – 安装XHProf
现在我们应该安装并启用XHProf。
要通过它安装pecl
,请运行:
$ sudo pecl install xhprof-beta
接下来,我们需要激活xhprof
扩展。为了在保持Ubuntu / Debian标准的同时促进此过程,我们将创建一个单独的ini
配置文件并使用该命令启用它php5enmod
。
ini
在里面创建一个新的配置文件/etc/php5/mods-available
:
$ sudo nano /etc/php5/mods-available/xhprof.ini
在此文件中包含以下内容:
/etc/php5/mods-available/xhprof.ini
extension=xhprof.so
要启用模块配置文件,请运行:
$ sudo php5enmod xhprof
现在唯一要做的就是重新启动Web服务器以应用更改。在LAMP环境(Apache)上,您可以执行以下操作:
$ sudo service apache2 restart
在LEMP环境(Nginx + PHP5-FPM)上,您应该使用以下命令重新启动php5-fpm
服务:
$ sudo service php5-fpm restart
该xhprof
扩展现在应该安装并激活。要确认,您可以运行:
$ php --ri xhprof
输出应该类似于:
Output
xhprof
xhprof => 0.9.2
CPU num => 1
第3步 – 安装MongoDB
下一步是mongo
在服务器上安装MongoDB和PHP扩展。XHGui使用MongoDB来存储通过XHProf的应用程序分析获得的数据。
要安装MongoDB,请运行:
$ sudo apt-get install mongodb
要安装MongoDB PHP扩展,请运行:
$ sudo pecl install mongo
安装将在某个时候询问您的输入,以选择是否要为MongoDB启用企业身份验证。您可以保留默认值(no),然后按Enter继续安装。
现在我们需要激活mongo
PHP扩展,遵循我们用于xhprof
扩展的相同过程。在以下位置创建新配置文件/etc/php5/mods-available/mongo.ini
:
在文件中包含以下内容:
$ sudo nano /etc/php5/mods-available/mongo.ini
/etc/php5/mods-available/mongo.ini
extension=mongo.so
要启用模块配置文件,请运行:
sudo php5enmod mongo
现在重新启动Web服务器以应用更改。在LAMP环境(Apache)上,您可以执行以下操作:
$ sudo service apache2 restart
在LEMP环境(Nginx + PHP5-FPM)上,您应该使用以下命令重新启动php5-fpm
服务:
$ sudo service php5-fpm restart
该mongo
扩展现在应该安装并激活。要确认,您可以运行:
$ php --ri mongo
输出应该类似于:
Outputmongo
MongoDB Support => enabled
Version => 1.6.12
Streams Support => enabled
SSL Support => enabled
Supported Authentication Mechanisms
MONGODB-CR => enabled
SCRAM-SHA-1 => enabled
MONGODB-X509 => enabled
GSSAPI (Kerberos) => disabled
PLAIN => disabled
...
第4步 – 设置MongoDB索引(可选)
这是一个可选但推荐的步骤,可以在存储和访问MongoDB数据时提高XHGui的整体性能。
通过命令行访问MongoDB客户端:
$ mongo
第5步 – 安装XHGui
下一步是安装XHGui并将其设置为Web服务器上的虚拟主机。
我们将从Github克隆XHGui存储库开始。因为我们需要将XHGui的内容作为Web服务器上的虚拟主机提供,我们将把克隆的存储库放在里面/var/www
。建议您将XHGui目录设置为由普通用户拥有。在此示例中,我们将使用sammy
用户名和组,但您应该使用您自己的用户名和组替换这些值。
添加用户密码均为:sammy
sun@iZwz99xibtof6c8lod50rhZ:/var/www/html$ sudo adduser sammy
Adding user `sammy' ...
Adding new group `sammy' (1002) ...
Adding new user `sammy' (1002) with group `sammy' ...
Creating home directory `/home/sammy' ...
sun@iZwz99xibtof6c8lod50rhZ:/$ sudo mkdir -p /var/www/html/xhgui
[sudo] password for sun:
sun@iZwz99xibtof6c8lod50rhZ:/$ cd /var/www/html/
sun@iZwz99xibtof6c8lod50rhZ:/var/www/html$ sudo git clone https://github.com/perftools/xhgui.git xhgui
Cloning into 'xhgui'...
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (16/16), done.
remote: Total 5430 (delta 6), reused 8 (delta 4), pack-reused 5410
Receiving objects: 100% (5430/5430), 1.35 MiB | 735.00 KiB/s, done.
Resolving deltas: 100% (3043/3043), done.
Checking connectivity... done.
sun@iZwz99xibtof6c8lod50rhZ:/var/www/html$
要安装XHGui的依赖项,请执行包含的安装程序:
cd xhgui
php install.php
sun@iZwz99xibtof6c8lod50rhZ:/var/www/html/xhgui$ sudo php install.php
Downloading composer.
All settings correct for using Composer
Downloading...
Composer (version 1.8.6) successfully installed to: /var/www/html/xhgui/composer.phar
Use it: php composer.phar
Installing dependencies.
sun@iZwz99xibtof6c8lod50rhZ:/var/www/html$ sudo chmod -R 777 xhgui/
[sudo] password for sun:
sun@iZwz99xibtof6c8lod50rhZ:/var/www/html$ cd xhgui/
sun@iZwz99xibtof6c8lod50rhZ:/var/www/html/xhgui$ sudo php install.php
Composer already installed.
Installing dependencies.
成功安装依赖项后,我们需要配置虚拟主机来提供内容xhgui
。接下来的部分将介绍如何xhgui
在LAMP和LEMP环境中创建虚拟主机。
在LAMP上设置XHGui的虚拟主机
使用Apache作为Web服务器时,我们首先需要确保mod_rewrite
已启用。要启用它,请运行:
sudo a2enmod rewrite
在以下位置创建新的虚拟主机文件/etc/apache2/sites-available
:
$ sudo nano /etc/apache2/sites-available/x