Скорость XDebug - Почему это так медленно (v2.6.2 -> 2.8.0b2) - PullRequest
0 голосов
/ 14 октября 2019

Что происходит со скоростью XDebug в последнее время? Я протестировал следующие версии - все они запускают одну и ту же страницу (зрелое приложение Symfony 2, поэтому не просто запрос каким-либо образом), и кажется, что с версии 2.7 ситуация ухудшилась, а затем еще больше, когда он отключил ZendOPCache в2.7.2.

  • 2.8.0b2 - 22,3 секунды
  • 2.7,2 - 6,9 секунды
  • 2,7,0 - 4,8 секунды
  • 2,6.1 - 2,3 секунды

(Все на том же оборудовании, выполняемое простым переключением используемой версии 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 в наши дни работает медленно?

Ответы [ 2 ]

0 голосов
/ 08 ноября 2019

Я также не могу отладить Xdebug 2.8.0 с помощью следующего кода:

<?php
phpinfo();
die;

Отладчик никогда не получает команду «die». Кажется, это отлаживает "phpinfo ()" в бесконечной манере. скриншот intelliJidea

Это реальная проблема, потому что сборка Xdebug 2.6.0 не может быть применена к php 7.2 и более поздним версиям.

0 голосов
/ 15 октября 2019

Прежде всего, не отключайте OPcache. Это большое повышение производительности.

Что касается замедления Xdebug, трудно сказать, почему он делает это, не зная полного приложения. Если вы не используете Code Coverage, то установка xdebug.coverage_enable=0 является хорошей идеей.

Многие из настроек, которые вы показываете, чтобы «сбить несколько вещей», в основном являются настройками по умолчаниютак что они не будут делать много. Если вы можете легко представить воспроизводимый случай, я бы посоветовал вам сообщить об ошибке на https://bugs.xdebug.org, чтобы автор Xdebug мог взглянуть на нее, но только в том случае, если ее легко воспроизвести.

Xdebug отключает некоторые настройки OPcache. И это зависит от версии PHP. Только для 7.3.0 и 7.3.1 мы отключаем определенную оптимизацию всегда, а для более поздних версий OPcache оптимизации (но не сам OPcache) отключаются, когда xdebug.remote_enable=1: https://github.com/xdebug/xdebug/blob/master/xdebug.c#L1086-L1103 - это должно оказать некоторое влияние, но не так сильно, как вы указываете.

Мне любопытно узнать, так как я хочу, чтобы дела шли быстрее, а не медленнее: -)

...