在XHProf Admin中比较分析会话

本文讨论了一种比较工具,用于比较用于分析PHP代码的会话,该工具使在Bitrix CMS上的项目中快速发现瓶颈成为可能。


从远处


7月,Bitrix当时已更新为最新版本。页面加载速度下降了:某处增加了20%,某处增加了300 +%。 特别是在客户订购阶段。


数字令人印象深刻,令人难过。 为什么要更新?


N |固体


即 如果不进行更新,则可能会立即解决两个问题:实际更新Bitrix并将代码库更新为PHP> 7.1。


刹车的原因


事实证明,最大的原因是使用交付配置文件的新代码逻辑。 根据代码,他们可以更正确地做到这一点,或者做些什么:货件显示为单独的实体。 现在,可以分几批发送订单(在成本,交付方式和商品组成方面具有其自身的特征)。


但是,现在交货概要文件是数据库中的一个单独条目,受Bitrix内核的限制,每次您需要检查下订单时显示此概要文件的可能性时,都会弹出该概要文件。


总的来说,本文将不会重点讨论为应对刹车所做的确切重做,而是针对一种工具,该工具可以快速找到代码中的瓶颈并进行修复。


XHProf管理员


我们可以使用来自Facebook的流行探查器-XHProf。 禁止使用该工具的缺点涉及其GUI:


  • 分析会话之间缺乏清晰的导航
  • 无法在同一名称空间之外同时比较两个以上的会话。
  • 您无法在会话列表中对其发表评论。 在第十届会议之后,您已经忘记了以前的概要分析结果所涉及的更改。

结果,查看了本机XHProf GUI的SOURCES,并有些惊恐地为他编写了一个新的GUI,涵盖了列出的缺点。


安装方式


链接到项目


我不会描述如何安装XHProf和配置文件,至少在Habré上有一些不错的教程。


要安装XHProf Admin,请将xhprof_admin文件夹放入本机XHProf的xhprof_html文件夹中。 或克隆整个项目(它已经包含XHProf和新的GUI)。


然后打开页面<xhprof的路径> / xhprof_html / xhprof_admin /
如果已启用映射(如文档中所建议),则需要打开<xhprof的路径> / xhprof_admin /


主页


ñ


包含:


  • 列出所有按日期排序的性能分析会话
  • 会话评论字段
  • 寒鸦,您可以选择要删除,比较,汇总的会话
  • 链接到新报告
  • 链接到本机报告和通话图
  • 区分和汇总的会话权重字段
  • 一个字段,指定在比较模式和差异模式下显示会话的顺序
  • 按键:
    • 比较-比较选定的会话(新报告)
    • Diff-用于比较一个名称空间中的会话的标准报告
    • 聚合-在一个名称空间中具有会话聚合的标准报告
    • 保存自定义评论-将会话的评论保存(在单独的文件中)
    • 删除选定的运行-删除会话文件和注释文件
    • 链接到本机会话列表页面

查看原始报告,Diff运行,聚合运行,查看调用图-XHProf GUI的本机功能-我将不对其进行描述。 我只能说XHProf Admin允许您方便地导航到它们,而不是手动编译链接。


比较运行


N |固体


一个新的报告,使您可以快速评估生产率的增长或下降。
要使用它,请在主页上:


  • 选择我们要比较的会话。
  • 我们将排序字段设置为“排序”,以确定会话的显示顺序:该字段的值越小,会话显示越早。 第一个会话将作为基础会话-所有后续会话都将与之进行比较。
  • 如果我们要显示指标的平均值,则标记为“显示平均值”。
  • 点击“比较”。
    N |固体

该报告未显示每个指标“占用”该功能的百分比,以免使页面混乱,但显示绝对值。 如果在基础会话与后续会话之间,所配置函数的度量标准之间的差异超过1%,则将清楚显示:绿色表示改进,红色表示回归。


默认情况下:


  • 该报告显示前100个功能。 如果您需要更多,请单击“全部显示”。
  • 数据按“包含”排序。 Wall Time(微秒)”,但您可以单击任意指标并按其排序。

要从报告中排除会话,请单击“排除”。


可以按每个指标进行排序-只需单击列标题即可。


要显示所有选定会话的平均值,请单击“显示平均值”。


要深入了解某个功能,可以单击该功能与指标与显示的会话相交处的单元格。


N |固体


使用范例


  1. 我们在源代码上启动了探查器。 我们打开了会话列表,并添加了评论。
  2. 我们在改进的代码上启动了探查器。 还添加了评论。
  3. 对项目2进行了几次。
  4. 然后,我们打开分析会话列表,依次选择所有会话,然后单击“比较”。
  5. 我们查看了这些变化。
  6. 他们决定进一步加快速度。

XHProf Admin方便地用于标识单个用户执行的常用繁重功能。 例如,在Bitrix中,每次从一个阶段转移到另一个阶段(交货,付款,联系方式等)下订单时,都会调用许多功能来控制购物篮的完整性等。这些阶段分别进行概要分析,然后一起显示在报告中比较一下。 这些功能的结果可以被缓存,从而大大加快了各个阶段之间的过渡时间。


总结


结果,我们在更新Bitrix时下订单的阶段就消除了速度下降,同时分析了站点的其他部分并加快了速度。
我们有时会在项目上使用XHProf Admin作为更直观的GUI。
指向XHProf管理员的文档链接:


谁对代码优化主题和对此感兴趣的工具感兴趣,请在注释中编写。

Source: https://habr.com/ru/post/zh-CN478858/


All Articles