Drupal: Редактируете статью и видите 10930 выполненных запросов?

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

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

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

ОБНОВЛЕНИЕ - ЭТО ПОМОГЛО Я нашел решение на http://drupal.org/node/402944. . Я применил исправление в _menu_link_translate (menu.inc). Сейчас у меня 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.

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

P.S. Я новичок в друпале.


person tboesgaard    schedule 01.02.2011    source источник
comment
Вы включили кэширование Drupal?   -  person Spudley    schedule 01.02.2011
comment
10930? Это вообще возможно? =) Моя самая сложная, ужасно закодированная страница делает 195 запросов. знак равно   -  person Ege Özcan    schedule 01.02.2011
comment
195 — это ничто для Drupal, D6 без модулей может обрабатывать до 100 запросов только для отображения 10 контента на главной странице ^^ Я уже видел действительно НЕПРАВИЛЬНО интегрированный сайт, выполняющий 6000 запросов для создания страницы, хех :D   -  person Pierre    schedule 01.02.2011
comment
Два метода вызываются и генерируют много запросов:   -  person tboesgaard    schedule 02.02.2011


Ответы (4)


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

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

person Berdir    schedule 01.02.2011

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

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

person Ferran Gil    schedule 01.02.2011

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

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

person Community    schedule 01.02.2011

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

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

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

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

person xtfer    schedule 01.02.2011