在生产服务器上启用XDebug会使PHP变慢吗?

And*_*rei 31 php performance xdebug production-environment

标题几乎说明了一切......这是一个坏主意吗?我想获得XDebug在服务器上提供的增强调试消息.

[编辑]只是为了清楚.我知道存在安全风险.也许我应该补充我的问题,并给出更准确的理由我为什么要这样做.

我们的生产服务器也提供测试平台.有时我们使用它来测试尽可能接近生产的环境.我正在寻找的主要是使用XDebug的增强功能var_dump().

这不是高流量应用的应用服务器,性能不是很大的问题.如果表现会受到XDebug的明显影响,我只是很好奇.

此外,我想我只能为定义测试站点的VirtualHost启用它.

Dav*_*nde 39

除了显而易见的事实,即调试消息无法在已经投入生产的应用程序中显示,而且事实上我不知道你为什么会这样,有一些非常糟糕的事情.

第一个是当您向服务器添加调试行为时,调试引擎"附加"到PHP进程并接收引擎的消息以在断点处停止,这是不好的,因为引入了高性能打击以获得另一个进程停止或"保留"PHP解析器.

另一个大问题是,当安装调试器时,至少大多数调试器,他们往往有在服务器中打开端口的恶习,因为它们不适用于生产环境,并且您可能知道,任何打开的软件服务器中的端口为任何黑客打开了一扇门.

如果您需要在代码中进行调试,那么在您的应用程序中,实现一个调试系统,如果不可用,因为大多数框架都内置了这个.设置配置值,比如说DEBUG_ENABLED,当抛出异常时,如果没有启用,重定向到一个小页面,否则转到一个带有调试信息的丑陋页面,但要注意你在服务器中显示的调试信息.我希望这能澄清一切.

编辑显然我的回答没有足够的记录,你应该检查这些来源

最后,有一件事我没说,因为我认为它是隐含的:这是常识不能做到的!您不要将调试工具放在生产服务器上,原因与将它们保存在不同环境中的原因相同,因为您需要保留不必要的东西.在服务器上运行的任何进程,无论多么轻,都会影响您的性能.

  • 这个答案是纯粹的FUD,没有xdebug中的安全漏洞或性能问题的证据.尽管如此,我知道这个答案是正确的 - 但它没有提供任何证据来支持其断言.使用正确的设置(例如display_errors off,并且没有远程调试),我不会在它面前看到为什么XDEBUG(在所有已编译的代码之后)将比自定义解决方案执行得更差. (3认同)

Ale*_*lex 15

减慢因子4

我做了一些测试只是启用模块,没有实际调试,使我的开发机器上的请求从1秒减慢到大约4秒

  • 什么样的测试?PHP的哪些部分放慢了速度?什么是测试框架? (6认同)
  • @Vadorequest(仅仅是为了未来的读者)这是因为你没有禁用xdebug遥控器而且它会连接到你的ide(已经关闭但没有响应). (5认同)

Ark*_*tov 10

完全删除 xdebug(即使它没有启用)使我们的页面加载提升了 50%(从 60 毫秒降低到 30 毫秒)。我们让 xdebug 处于“休眠”状态(等待触发)。我们认为由于它处于休眠状态,因此不会造成任何伤害,但是我们错了。

我们在 21:43 左右注释掉了 php 配置中的 zend_extension 行。每个核心的平均负载也从 0.4 下降到 0.2:

在此处输入图片说明