如何找到使用最多 CPU 的 PHP 代码行

How to find the line of PHP code which is using most CPU

我目前正在使用 EC2,并且在测试(使用 locust.io)100 个并发用户时,我达到了 15 的 RPS。但是,我的 CPU 使用率接近 100%。

有谁知道如何追踪 PHP 7 个使用最多 CPU 代码的 line/lines,以便我优化它们?

我建议 xdebugkcachegrind 分析代码的行为。

像这样配置 xdebug 以启用分析:

xdebug.profiler_enable = 1
xdebug.profiler_output_name = xdebug.out.%t
xdebug.profiler_output_dir = /tmp
xdebug.profiler_enable_trigger = 1

如果您将 XDEBUG_PROFILE 作为 POST 或 GET 参数传递,xdebug 将在配置的位置生成分析数据。

使用 kcachegrind 打开这些文件以深入研究。

注意:在分析时执行会花费时间,并且生成的文件可能会变得非常大——注意磁盘使用情况。

在大多数语言和应用程序类型中,有相当多的商业产品旨在明确解决这些问题(通常有不错的免费试用)。

New Relic 在网络软件方面非常擅长,能够生成燃烧图表显示哪些方法导致最多 CPU 循环。它还能够特别突出显示不良查询、API 调用和其他外部服务。

这是我在尝试诊断 PHP 或 Java 网络应用程序中的性能问题时使用的工具。

A​​WS 刚刚推出 'X-Ray',它被要求做类似的工作,但我还没有机会尝试。