2

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

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

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

有关如何追踪此问题的任何建议?[linux/Centos5/php5.2.?/apache2]

4

3 回答 3

2

Xdebug 和 webgrind 是查看瓶颈所在位置的好方法...

阅读XDEBUG_PROFILEWebgrind

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

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

于 2012-04-17T18:31:03.943 回答
2

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

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

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

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

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

下一步将跟踪执行了哪些 SQL 查询,并且(假设您使用的是 mysql)尝试使用EXPLAIN. 另外,检查查询本身。那里可能有一些非常愚蠢的代码,比如在巨大的表格中ORDER BY RAND()使用。LIKE

最后一个阶段将修复这一切将仔细查看代码本身。在 PHP 和 JavaScript 方面。

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

于 2012-04-17T18:35:20.917 回答
1

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

虽然 new relic 是一款付费应用,但您可以在前 14 天免费测试 - 发现问题绰绰有余。

这很棒,因为它集成了您通常使用的所有其他工具和数据源:xdebug、cpu 和 i/o 监控、mysql 慢日志、查询日志。它还会显示您的应用程序在 php/DB/frontend/network 上是否运行缓慢。

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

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

于 2012-04-17T18:39:19.687 回答