Тестирование и отладка

Производить отладку через XDebug очень легко - стоит лишь добавить определенную строчку типа ?XDEBUG_SESSION_START=15137 к адресу запроса, и мы можем ставить breakpoint'ы в нужных местах кода чтобы посмотреть значение переменных. Однако что же делать, если на странице вызывается какой-то ajax-скрипт (например, при нажатии на кнопку), и в нём почему-то не срабатывают выставленные breakpoint'ы? Всё дело в том, что к ajax-запросам не добавляется нужной нам переменной XDEBUG_SESSION_START, и наш сервер просто не знает, что нужно останавливаться.
Для решения этой проблемы я пошёл прямым...

Если выдается непонятная ошибка с указанием на один из файлов ядра (например entity.inc), то ошибка конечно не в ядре, а в каком-то модуле, который вызывается из нашего ядра.
Соответственно, чтобы найти этот модуль, можно воспользоваться трюком backtrace

To better track down the code that is calling DrupalDefaultEntityController, try inserting the following before line 178 in entity.inc:

drupal_set_message(var_export...

Прочитал шикарнейшую статью с хорошим примером об оптимизации сайта на Друпале http://drupalace.ru/lesson/proizvoditelnost-sayta-na-drupal-analiz-serve..., и решил пополнить сообщество опытом своего случая оптимизации.

Итак, имеем сайт на Друпале, заказчик жалуется, что несколько конкретных страниц открываются очень медленно.

Use Case 1.

Включаем в Firebug закладку "Сеть", открываем первую из нужных нам страниц:

Сразу видно, что проблема на сервере - 23 секунды...