首页 > 解决方案 > XDebug Speed - 为什么这么慢 (v2.6.2 -> 2.8.0b2)

问题描述

最近 XDebug 的速度是怎么回事?我已经对以下版本进行了基准测试 - 所有版本都运行相同的页面(一个成熟的 Symfony 2 应用程序,所以无论如何都不是一个简单的请求),并且似乎从 2.7 版本开始它变得更糟,然后当它禁用 ZendOPCache 时更是如此2.7.2.

(所有都在同一硬件上,只需切换正在使用的 XDebug 版本即可)

当然,如果没有启用 XDebug,页面运行良好(0.7 秒),但使用最新版本(我很欣赏 2.8.0 是测试版),它就无法使用了。

这是我用于测试的配置

xdebug.remote_enable=1
xdebug.remote_mode=req
xdebug.idekey=default
xdebug.remote_host=127.0.0.1
xdebug.remote_autostart=0
xdebug.var_display_max_children=512
xdebug.var_display_max_data=32000
xdebug.var_display_max_depth=8
xdebug.remote_log=/tmp/xdbg.log

然后我又找到了一些技巧,这有点小题大做,但我们在所有版本中都谈了几毫秒。

[xdebug]
xdebug.remote_enable=1
xdebug.remote_mode=req
xdebug.idekey=default
xdebug.remote_host=127.0.0.1
xdebug.remote_autostart=1
xdebug.var_display_max_children=512
xdebug.var_display_max_data=32000
xdebug.var_display_max_depth=12
xdebug.remote_log=/tmp/xdbg.log
xdebug.profiler_enable=0

xdebug.collect_includes = 0
xdebug.collect_params = 0
xdebug.collect_return = 0
xdebug.collect_vars = 0


xdebug.overload_var_dump = 2

xdebug.coverage_enable = 0
xdebug.profiler_enable = 0
xdebug.profiler_enable_trigger = 1

我只是错过了什么,还是只是 XDebug 这些天变慢了?

标签: xdebug

解决方案


首先,不要禁用 OPcache。这是一个很好的性能提升。

至于 Xdebug 会减慢速度,在不了解完整应用程序的情况下很难说它为什么会这样做。如果您不使用代码覆盖率,那么设置xdebug.coverage_enable=0是一个好主意。

您为“取消一些事情”而显示的许多设置基本上是默认设置,因此它们不会做很多事情。如果您可以轻松地提供可重现的案例,那么我建议您在https://bugs.xdebug.org提交错误,以便 Xdebug 的作者可以查看它,但前提是它很容易重现。

Xdebug 确实禁用了一些 OPcache 设置。这取决于 PHP 版本。仅对于 7.3.0 和 7.3.1,我们始终关闭特定优化,对于更高版本,OPcache优化(但不是 OPcache 本身)在以下情况下关闭xdebug.remote_enable=1https ://github.com/xdebug/xdebug/blob/ master/xdebug.c#L1086-L1103——这应该会产生一些影响,但没有你说的那么大。

不过我很想知道,因为我想让事情变得更快,而不是更慢:-)


推荐阅读