标题几乎说明了一切......这是一个坏主意吗?我想获得XDebug在服务器上提供的增强调试消息。
[编辑] 只是为了说清楚。我知道存在安全风险。也许我应该补充我的问题,并给出更准确的理由,为什么我要这样做。
我们的生产服务器也提供测试平台。有时我们使用它来测试尽可能接近生产的环境。我正在寻找的主要内容是使用XDebug的增强型var_dump()
。
这不是高流量应用的应用服务器,性能不是很大的问题。我很好奇XDebug对性能的影响是否强烈。
此外,我想我只能为定义测试站点的VirtualHost启用它。
答案 0 :(得分:39)
除了显而易见的事实,即调试消息无法在已经投入生产的应用程序中显示,而且事实上我不知道你为什么会喜欢它,因此有一些非常糟糕的事情。
第一个是当你向服务器添加调试行为时,调试引擎“附加”到PHP进程并接收引擎的消息以在断点处停止,这是不好的,因为引入了高性能打击让另一个进程停止或“保留”PHP解析器。
另一个大问题是,当安装调试器时,至少大多数调试器,他们往往有在您的服务器中打开端口的恶习,因为它们不适用于生产环境,并且您可能知道,任何打开服务器端口的软件为任何黑客打开了一扇门。
如果你需要在代码中进行调试,那么在你的应用程序中,实现一个调试系统,如果不可用,因为大多数框架内置了这个。设置一个配置值,比如DEBUG_ENABLED,当抛出异常时,如果是没有启用,重定向到一个小页面,否则转到一个带有调试信息的丑陋页面,但要注意你在服务器中显示的调试信息。 我希望这能澄清一切。
编辑显然我的回答没有足够的记录,你应该查看这些来源
最后,有一件事我没说,因为我觉得它有点暗示:这是常识不行!您不要将调试工具放在生产服务器上,原因与将它们保存在不同环境中的原因相同,因为您需要保留不必要的东西。在服务器上运行的任何进程,无论多么轻,都会影响您的性能。
答案 1 :(得分:15)
我做了一些测试,只是启用模块,没有实际调试,使我的开发机器上的请求从1秒减慢到大约4秒
答案 2 :(得分:4)
为什么你想要这样的东西?部署到生产之前进行调试。它会使应用程序变慢。
答案 3 :(得分:3)
完全删除xdebug(即使未启用xdebug)也使页面负载提升了50%(从60ms降至30ms)。我们让xdebug处于“休眠”状态(等待触发)。我们认为,由于它处于休眠状态,因此不会造成任何伤害,但是男孩,我们错了。
我们在21:43左右注释掉了php配置中的zend_extension行。每个核心的平均负载也从0.4降至0.2:
答案 4 :(得分:1)
你永远不应该把它保留在生产上。
您的应用程序应该永远不需要打印出“那些好的调试消息”,因为它们对您的用户来说并不是很好。它们是测试不佳的标志,它们会扼杀用户的信任,特别是在企业/电子商务环境中。
其次,您揭示的技术信息越详细,您就越有可能被黑客入侵(特别是如果您已经发现实际上您的代码存在问题!)。生产服务器应将错误记录到文件中,并且永远不会显示它们。
执行速度是您最不关心的问题,无论如何它都会受到影响,内存也是如此。
答案 5 :(得分:1)
Xdebug用于向错误日志添加完整堆栈跟踪,即display_errors ini值,当然应该是Off(即使在开发中我也不想这样)。除非启用remote_attach ini设置,否则它不允许远程连接到调试器。虽然速度较慢,但如果您遇到像分配的最大内存或分段错误这样的PHP神秘错误,这是您将看到实际发生错误的唯一方法。
答案 6 :(得分:1)
您可以始终使用完全相同的配置克隆您的实时服务器,但不会公开。 然后你可以在它上面安装XDebug并用几乎完全相同的条件调试东西(好吧,在现实生活和克隆之间加载会有所不同,但其余部分将是相同的)。 在这种情况下,您可以在实时环境中调试内容,但实际生活不受影响。
注意:显然它并不适用于任何人。不是每个人都可以轻松克隆服务器。如果您使用AWS等云服务,那将非常容易。如果您使用Ansible,Chef,Puppet等服务器配置工具来构建服务器,这也是件小事。
答案 7 :(得分:1)
我知道这是一篇过时的文章,但是由于Xdebug的问题仍然存在10年,所以我想指出相关的错误报告(以WONTFIX NOTABUG结尾):https://bugs.xdebug.org/view.php?id=1668
Tl; dr:
仅安装xdebug(在Linux @least上)将使站点上的所有php速度变慢,即使所有标志都设置为OFF,其点击率也从2倍提高到20倍。 永远不要安装xdebug。更好的是,研究侵入性较小的调试选项。
答案 8 :(得分:0)
您永远不应在生产服务器上显示调试错误消息。它对您的用户来说很难看,也存在安全风险。我相信它会让它变得有点慢。
答案 9 :(得分:0)
如果“做得对”,您可以在生产中使用XDebug。您可以在“休眠”模式下启用扩展,该模式仅通过通过特定HOSTS名称的请求生效。这里详细介绍:
http://www.drupalonwindows.com/en/content/remote-debugging-production-php-applications-xdebug
答案 10 :(得分:0)
我使用此php benchmark tool测试了性能影响。免责声明,我构建了该工具。
答案是xdebug模块极大地减慢了代码执行速度:从2倍到7倍,具体取决于测试。这是我的结果:
# env information
php version : 7.4.5
platform : WINNT x64
# disable xdebug extension in php.ini
$ php src/benchmark.php --iterations 1000 --time-per-iteration 50 --save xdebug_off
# enable xdebug extension
$ php src/benchmark.php --iterations 1000 --time-per-iteration 50 --save xdebug_on
# compare
$ php src/compare.php --file1 benchmark_xdebug_off_20201127-0946.txt --file2 benchmark_xdebug_on_20201127-0939.txt
------------------------------------------------
test_math OFF ON
mean : 3762 531 -85.9%
median : 4226 568 -86.6%
mode : 4655 596 -87.2%
minmum : 918 188 -79.5%
maximum : 4722 612 -87.0%
quartile 1 : 3081 490 -84.1%
quartile 3 : 4580 595 -87.0%
IQ range : 1498 105 -93.0%
std deviation : 984 87 -91.1%
normality : 11.0% 11.0%
------------------------------------------------
test_strings
mean : 1419 677 -52.3%
median : 1521 688 -54.7%
mode : 1580 974 -38.4%
minmum : 537 90 -83.2%
maximum : 1629 1071 -34.3%
quartile 1 : 1319 452 -65.7%
quartile 3 : 1582 892 -43.6%
IQ range : 262 440 67.8%
std deviation : 226 248 9.8%
normality : 6.6% 6.6%
------------------------------------------------
test_loops
mean : 8131 1208 -85.1%
median : 8617 1240 -85.6%
mode : 9109 1407 -84.6%
minmum : 3167 589 -81.4%
maximum : 9666 1435 -85.2%
quartile 1 : 7390 1116 -84.9%
quartile 3 : 9253 1334 -85.6%
IQ range : 1863 217 -88.3%
std deviation : 1425 164 -88.4%
normality : 5.6% 5.6%
------------------------------------------------
test_if_else
mean : 279630 31263 -88.8%
median : 293553 31907 -89.1%
mode : 303706 37696 -87.6%
minmum : 104279 12560 -88.0%
maximum : 322143 37696 -88.3%
quartile 1 : 261977 28386 -89.2%
quartile 3 : 307904 34773 -88.7%
IQ range : 45927 6387 -86.1%
std deviation : 39034 4405 -88.7%
normality : 4.7% 4.7%
------------------------------------------------
test_arrays
mean : 5705 3275 -42.6%
median : 5847 3458 -40.9%
mode : 6040 3585 -40.6%
minmum : 3366 1609 -52.2%
maximum : 6132 3645 -40.6%
quartile 1 : 5603 3098 -44.7%
quartile 3 : 5965 3564 -40.3%
IQ range : 361 465 28.8%
std deviation : 404 394 -2.5%
normality : 2.4% 2.4%
------------------------------------------------