Drupal: редактирование статьи и просмотр 10930 выполненных запросов? - PullRequest
1 голос
/ 01 февраля 2011

Вот что говорит мне первая строка из devel:

Выполнено 10930 запросов за 3177,9 миллисекунд.Запросы, занимающие более 5000 мс, и запросы, выполненные более одного раза, подсвечиваются.Время выполнения страницы было 8976,56 мс

Это звучит как много.Что / где я должен искать, чтобы найти причину этого?

ОБНОВЛЕНИЕ - ЭТО ПОМОЧЬ Я нашел решение в http://drupal.org/node/402944. Я применил исправление в _menu_link_translate (меню.вкл).Теперь у меня до 1500 запросов.

ОБНОВЛЕНИЕ: Два метода вызваны экстенсивно и генерируют много запросов:

drupal_lookup_path (около 600) запросов в виде:

SELECT src FROM url_alias WHERE dst = 'node/81528/edit' AND language IN('da', '') ORDER BY language DESC

_ad_channel_load_node (около 1800 запросов).Этот метод запрашивает MySQL три раза.Видимо, метод вызывается на node_load.

Что касается кеширования, я думаю, что я бы начал искать способ уменьшить количество запросов.Что-то, кажется, немного не в порядке.

PS Я новичок в Drupal.

Ответы [ 4 ]

1 голос
/ 01 февраля 2011

Хорошо, посмотрите на запросы ниже (включите отображение запросов, если вы еще этого не сделали).Попробуйте подсчитать, какие функции выполняют самые медленные и самые медленные запросы.Затем попытайтесь выяснить, к какому модулю они принадлежат и что они делают.

Кэши очищаются при редактировании узла, поэтому существует большой объем данных, которые необходимо загрузить снова.

0 голосов
/ 01 февраля 2011

Есть несколько вещей, которые могут заставить Drupal выполнять множество запросов:

  1. Перестроение маршрутизатора меню, либо с очисткой кэша, либо с помощью другой подобной функции.
  2. Множество модулейустановлен.
  3. Реестр тем перестраивается на каждой странице (некоторые темы имеют этот параметр)

Если у вас, как правило, только анонимные пользователи просматривают ваш сайт, вы можете проверить его со страницей.кэширование, сжатие и сжатый CSS / JS, что может значительно сократить количество запросов.

Также использование чего-то вроде Cachegrind и Webgrind может помочь определить, какие функции PHP требуют много времени для выполнения, а иногда и болееполезнее, чем сколько SQL-запросов вы выполняете.

0 голосов
/ 01 февраля 2011

Это звучит как проблема с меню роутера.Когда кеши меню очищены, выполняется menu_rebuild, которое может генерировать многие тысячи запросов, как вы описали.Это похоже на эффект этой основной ошибки в Drupal http://drupal.org/node/512962

Если вы предоставите образец запросов, мы сможем помочь вам больше.

0 голосов
/ 01 февраля 2011

Devel также может отображать запросы один за другим.Включите это, повторно отредактируйте статью, сохраните ее, а затем посмотрите на конкретные запросы.Вероятно, многие из них будут выглядеть одинаково, поэтому вы можете начать копать все больше и больше.

Дайте нам знать больше о статье.Я предполагаю, что это CCK-узел, но имеет ли он много полей?Какой вид?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...