PhpPerfTools/Collector收集的配置数据的基于Web的界面。

安装: 0

依赖关系: 0

建议者: 0

安全: 0

星星: 0

观察者: 2

分支: 0

开放问题: 0

语言:JavaScript

dev-master 2020-06-18 06:22 UTC

This package is auto-updated.

Last update: 2024-09-18 20:42:40 UTC


README

XHProf数据的图形界面。

此工具需要安装XHProf或其分支之一UprofilerTideways。XHProf是一个PHP扩展,用于记录和提供配置数据。PhpPerfTools/GUI(此工具)获取这些信息,并提供一个方便的GUI来与之交互。

系统要求

PhpPerfTools/GUI有以下要求

  • PHP版本5.3或更高。
  • 基于MongoDB的安装
    • MongoDB扩展 MongoDB PHP驱动。PhpPerfTools/GUI需要1.3.0或更高版本。
    • MongoDB MongoDB本身。PhpPerfTools/GUI需要2.2.0或更高版本。
  • 基于PDO的安装
    • PDO扩展。
    • 以下任一SQL服务器:MySQL/MariaDB或PostgreSQL。它也可以与SQLite一起工作。
  • 上传配置
    • CURL扩展。
    • 适当的网络/防火墙规则:GUI实例和收集器实例必须能够相互看到。
  • 以下任一XHProfUprofilerTideways用于实际配置数据。
  • dom如果您正在运行测试,则需要DOM扩展(它是PHPUnit的依赖项)。

从源代码安装

  1. 从GitHub克隆或下载PhpPerfTools/GUI

  2. 将您的Web服务器指向public目录。

  3. 设置cache目录的权限,允许Web服务器创建文件。如果您懒惰,则0777将工作。

    以下命令更改cache目录的权限

    chmod -R 0777 cache
  4. 设置您的Web服务器。下面的配置部分描述了如何设置nginx和apache的重写规则。

MongoDB存储

  1. 启动一个MongoDB实例。

  2. 如果您的MongoDB配置使用身份验证,或者不在默认端口和localhost上运行,请更新PhpPerfTools/GUI的config/config.php,以便PhpPerfTools/GUI可以连接到您的mongod实例。

  3. (可选,但推荐) 向MongoDB添加索引以提高性能。

    PhpPerfTools/GUI将配置信息存储在MongoDB的数据库中的results集合中。添加索引可以提高性能,让您可以更快地浏览页面。

    要添加索引,请从命令提示符打开mongo shell。然后,使用MongoDB的db.collection.ensureIndex()方法添加索引,如下所示

    $ 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 } )
    

限制MongoDB磁盘使用量

磁盘使用量可能会迅速增长,尤其是在配置大型代码库或使用大型框架的应用程序时。

为了控制增长,配置MongoDB自动删除达到一定年龄的配置文档,通过创建TTL索引

决定最大配置文件年龄(以秒为单位):在开发阶段(您对所有内容进行配置)和在生产阶段(您只对文档的一部分进行配置)时,您可能希望选择不同的值。以下命令指示Mongo删除5天(432000秒)以上的文档。

$ mongo
> use xhprof
> db.results.ensureIndex( { "meta.request_ts" : 1 }, { expireAfterSeconds : 432000 } )

PDO存储

架构

架构文件位于GUI的根目录中。将架构导入数据库并配置存储处理器。

配置

array(
    'id' => 'sqlite-test',
    'name' => 'Test sqlite instance',
    'type' => 'pdo',

    'dsn' => 'sqlite:../test.sqlite',
    'user' => 'user',
    'password' => 'password'
),

配置

配置Web服务器重写规则

PhpPerfTools/GUI更喜欢启用URL重写,但即使没有它也可以工作。对于Apache,您可以通过以下方式启用URL重写

  1. 确保允许.htaccess覆盖,并且AllowOverride已将FileInfo指令设置为正确的DocumentRoot。

    Apache 2.4的示例配置

    <Directory /var/www/gui/>
        Options Indexes FollowSymLinks
        AllowOverride FileInfo
        Require all granted
    </Directory>
  2. 确保您已正确加载mod_rewrite。您应该看到如下内容

    LoadModule rewrite_module libexec/apache2/mod_rewrite.so
  3. PhpPerfTools/GUI附带一个.htaccess文件以启用剩余的重写规则。

对于nginx和fast-cgi,您可以从以下片段开始

server {
    listen   80;
    server_name example.com;

    # root directive should be global
    root   /var/www/example.com/public/gui/public/;
    index  index.php;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        try_files $uri =404;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass    127.0.0.1:9000;
        fastcgi_index   index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

配置PhpPerfTools/GUI分析率

安装PhpPerfTools/GUI后,您可能希望更改对主机应用程序的分析频率。《code>profiler_enable配置选项允许您提供一个回调函数,该函数指定要分析的请求。默认情况下,PhpPerfTools/GUI分析1/100的请求。

以下示例配置PhpPerfTools/GUI以仅分析来自特定URL路径的请求

以下示例配置PhpPerfTools/GUI以分析1/100的请求,排除具有/blog URL路径的请求

// In config/config.php
return array(
    // Other config
    'profiler_enable' => function() {
        $url = $_SERVER['REQUEST_URI'];
        if (strpos($url, '/blog') === 0) {
            return false;
        }
        return rand(1, 100) === 42;
    }
);

相比之下,以下示例配置PhpPerfTools/GUI以分析每个请求

// In config/config.php
return array(
    // Other config
    'profiler_enable' => function() {
        return true;
    }
);

配置'简单'URL创建

PhpPerfTools/GUI为收集到的每个配置文件生成'简单'URL。这些URL用于生成URL视图上使用的汇总数据。由于不同的应用程序对URL映射到逻辑代码块块的要求不同,profile.simple_url配置选项允许您指定用于生成简单URL的逻辑。默认情况下,查询字符串中的所有数值都会被删除。

// In config/config.php
return array(
    // Other config
    'profile.simple_url' => function($url) {
        // Your code goes here.
    }
);

URL参数是REQUEST_URIargv值。

配置忽略的函数

您可以使用profiler_options配置值来设置针对分析器扩展的附加选项。当您希望从分析器数据中排除特定函数时,这很有用。

// In config/config.php
return array(
    //Other config
    'profiler_options' => [
        'ignored_functions' => ['call_user_func', 'call_user_func_array']
    ]
);

分析Web请求或CLI脚本

使用collector,您可以从您的Web应用程序和CLI脚本中收集数据。然后,这些数据将推送到PhpPerfTools/GUI的数据库中,您可以在此应用程序中查看这些数据。

瀑布显示

PhpPerfTools/GUI的瀑布显示目标是认识到并发请求可能相互影响。并发数据库请求、CPU密集型活动,甚至是会话文件的锁定都可能变得相关。对于Ajax密集型应用程序,理解页面构建比单个加载要复杂得多:希望瀑布可以帮助。记住,如果您只分析请求样本,则瀑布会向您展示不礼貌的谎言。

使用Tideways扩展

XHProf PHP扩展与PHP7.0+不兼容。相反,您需要使用tideways_xhprof扩展

安装后,您可以使用以下配置数据

[tideways_xhprof]
extension="/path/to/tideways/tideways_xhprof.so"

许可证

原始代码版权所有2013 Mark Story & Paul Reinheimer 改变版权所有Grzegorz Drozd

特此授予任何获得此软件及其相关文档文件(“软件”)副本的任何人(“个人”)免费处理软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许软件提供者为此目的而使用该软件,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“原样”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、适用于特定目的和不侵犯版权。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论这些索赔、损害或其他责任是由于合同行为、侵权行为或其他原因引起的,无论与软件或其使用或其他方式有关。