测量 PHP 性能


measuring php performance

我正在尝试跟踪应用程序的问题 [modx] 我的服务器上有几个这样的站点[大约 10],想知道我如何看到 php 在做什么。

这些站点上的页面非常慢,而 dev 中的相同站点与服务器上的其他 php 应用程序一样很好。

我尝试使用 xdebug 来了解 php 在处理这些页面时在做什么以及瓶颈发生的位置,但它似乎只想对错误做任何事情 [没有抛出错误]

关于如何追踪这一点的任何建议?[linux/Centos5/php5.2.?/阿帕奇2]

Xdebug 和 webgrind 是查看您的 bottel 脖子在哪里的好方法......

阅读XDEBUG_PROFILE和Webgrind

设置 php.ini 让 xdebug 在每次运行时分析您的代码,或者如果传递了一个特殊的参数,然后设置 webgrind 以从 xdebug 写入其配置文件转储的同一目录读取。

Webgrind 将向您展示哪些函数和函数集需要最多时间,它会分解它并使其易于找到缓慢和/或低效的代码。(例如,您的脚本在快速查询中调用"PDOStatement->execute"300 次 [或调用一次并且非常慢的查询] 占用了 90% 的执行时间)。

PHP中查找瓶颈最常用的工具是Xdebug。但您也应该手动检查代码库。

您必须关注三个不同的领域:

  • 前端性能
  • SQL查询
  • PHP逻辑本身

.. 对感知速度的影响是按此顺序排列的。

您应该从运行 ySlow 开始,并确保您的网站尽可能严格地遵循指南。

下一步是跟踪执行的SQL查询,并(假设您使用的是mysql)尝试使用EXPLAIN运行它们。此外,请检查查询本身。那里可能有一些非常愚蠢的代码,比如ORDER BY RAND()或在大型表中使用LIKE

最后阶段将修复所有内容,仔细查看代码本身。无论是在PHP还是JavaScript方面。

另外,您应该升级到 PHP 5.3,因为您的版本非常过时。

通常,当您不知道自己在寻找什么时,您无法使用xdebug或其他内置于CMS/Framework中的插件/调试栏等工具发现它,New Relic是最简单的解决方案 - 几分钟后您将能够发现瓶颈。

虽然New Relic是一个付费应用程序,但您可以在前14天内免费测试是否免费 - 发现问题绰绰有余。

它很棒,因为它集成了您通常使用的所有其他工具和数据源:xDebug,CPU和I/O监控,MySQL Slowlog,查询日志。它还会显示您的应用程序在 php/DB/前端/网络上是否运行缓慢。

您应该尝试一下,而不是浪费时间使用其他工具进行调试。

以下是 CentOS 安装指南: https://newrelic.com/docs/php/php-agent-installation-redhat-and-centos