gggeek/ezperformancelogger

此包已被废弃,不再维护。未建议替代包。

一个用于测量eZ Publish网站性能的扩展

安装次数: 1,635

依赖: 1

建议者: 0

安全性: 0

星标: 11

关注者: 3

分支: 2

开放问题: 0

类型:ezpublish-legacy-extension

0.12.0 2014-09-18 09:22 UTC

This package is auto-updated.

Last update: 2022-12-24 00:27:10 UTC


README

本工具旨在测量eZ Publish网站的性能。

性能测量旨在在生产环境中使用。它可以在ezdebug关闭的情况下工作,并尽量轻量,以免因测量而过多减慢服务器速度。因此,默认情况下,它不会将性能数据存储到数据库中,而是作为现有Apache日志的一部分。测量性能数据的大小可以完全配置,以及存储它的机制。

从版本0.4开始,它还充当性能分析工具,这意味着您可以获得比标准调试输出更详细的信息,包括钻取功能和调用图。

对于普通读者请注意:性能分析意味着测量网页执行的所有PHP函数调用,这非常耗时。它仅应在开发环境中使用,不应在生产环境中使用。

要求

  • eZP >= 4.6或5.X运行在纯-传统堆栈模式下(注意:当eZ5不在仅传统堆栈模式下运行时,您需要安装eZPerformanceLoggerBundle)
  • 推荐使用apache web服务器
  • 可选:piwik或ga账户
  • 可选:xhprof分析器和graphviz
  • 可选:Monolog库及其依赖项

安装

请参阅INSTALL.md文档

工作原理:性能日志记录

  • 通过记录性能指标(也称为KPI)- 对于每次页面查看 - 目前支持的指标包括:

    • 总执行时间
    • 总内存使用量
    • 数据库查询次数
    • 所有现有的eZ4累加器(仅在调试模式下)
    • 任何现有的eZ4 "事件"触发的次数
    • eZ4数据库访问、集群数据库访问和imagemagick转换时间(仅通过使用特殊的连接器类)
    • 开发人员使用PHP代码或模板代码设置的定制指标
    • 来自$module_result的任何数据(对于eZ 5.x,这需要在pagelayout中添加一些模板代码)
  • 数据记录可以指向不同的媒介

    • Apache访问日志
    • piwik网络分析引擎
    • google分析引擎
    • 单独的日志文件(Apache日志格式)
    • 单独的日志文件(csv格式)
    • Monolog日志库
    • Pinba服务器
    • Odoscope服务器
    • Statsd服务器
    • http响应头(对Nginx日志很有用)以及未来可能更多。

    建议将日志记录到Apache访问日志中,原因有很多:默认情况下,Apache日志会自动轮转,因此您不会冒用尽磁盘空间的风险,并且在那里记录日志时,IO性能损失较小,因为日志文件无论如何都会被写入。

  • 为简化在Apache日志中保存的性能数据的统计使用,提供了一个友好的cronjob/命令行脚本:updateperfstats。它可以在两阶段性能分析场景中使用

    第一阶段:启用并配置ezperformanceogger以将日志记录到Apache日志或自定义日志文件中;执行负载测试

    第二阶段:运行php扩展/ezperformancelogger/bin/php/updateperfstats.php来解析Apache访问日志并生成CSV文件;将此CSV文件导入您首选的电子表格工具或数据库

    如果您不太在意非常小的性能损失,您可以直接将性能数据记录到csv格式的日志文件中,并跳过updateperfstats.php脚本的执行。

注意:该扩展不提供可视化记录数据的方式,您需要使用外部工具

  • 对于流式传输到Apache日志或单独日志文件中的数据,需要能够导入CSV文件的电子表格程序
  • 对于流式传输到piwik、ga、odoscope或statsd/graphite的数据,请使用分析工具的Web界面

注意

  • 测量的脚本运行时间略短于现实,因为我们不能在PHP进程执行的开始和结束时挂钩

  • 测量的时间四舍五入到毫秒

  • 测量的RAM使用量四舍五入到1000字节

  • 默认情况下,只有在开启调试输出时才能测量执行的数据库查询。我们提供了一个替代的db-connector类,仅适用于eZ 4.4-5.3 / mysqli,当关闭调试输出时,可用于测量详细的数据库信息(请参阅site.ini和ezperformancelogger.ini文件以获取详细信息)

  • 默认情况下,以重定向结束或在进行视图时终止执行的eZ页面不会记录数据。要强制测量这些页面,您必须修补index.php文件并向其中添加以下行:eZPerfLogger::registerShutdownPerfLogger();理想的位置是现有的eZExecution::addCleanupHandler调用旁边。

    对于Legacy-Stack-Only模式的eZ 5.x,这位于ezpkernelweb.php中,大约在191行;请注意,在这种情况下,测量的数据可能低于预期,您还应该修补ezpkernelweb::runCallback()以避免通过调用eZPerfLogger::disable()和reenable()来测量数据。

    对于任何其他模式的eZ 5.x,您不需要做任何事情 - 它只是正常工作并记录重定向页面。

    如果您不想修改内核并且使用自定义数据库连接器,您只需在ezperformacelogger.ini中设置AlwaysRegisterShutdownPerfLogger=enabled即可

如何工作:性能分析

  • 需要XHProf PECL扩展来获取性能分析信息

  • 性能分析在config.php页面执行开始时启用,并在页面结束前稍作停止。因此,它不是100%准确的

  • 性能分析信息保存在var/log/xhprof目录下的文件中

  • 在页面底部通过javascript添加了一个链接来查看详细的性能分析信息

  • 所有性能分析数据都存储起来,可以稍后查看。它可通过管理界面的“设置”选项卡访问

  • 性能分析可以独立于性能日志启用/禁用,但启用时,记录的内存或执行时间数字将没有用处

  • 有关XHProf的更多信息,Google是您的朋友

注意

  • 性能分析信息未分组。它仅可在生成它的Web服务器上可用

类似工具

有许多应用性能管理解决方案,它们可以执行更多此类扩展的功能。一个非常好的(但并非完全免费)APM工具是NewRelic。

对于应用程序性能分析,除了XHProf和XDebug之外,还有(但并非完全免费)Blackfire.io。