Drupal - Отношение полей CCK и типов контента к производительности? - PullRequest
1 голос
/ 05 августа 2009

Я помогаю кому-то с установкой Drupal 6, и он очень расстроен производительностью сайта, хотя он только на этапе определения типов контента. Простая загрузка списка модулей может занять более 30 секунд, а импорт типа контента занял около 3 минут.

Это установлено в большой общей системе UNIX, и я запускаю другие установки D6 на том же сервере без особых проблем (некоторая медлительность, но ничего такого плохого). Сегодня я провел некоторое время, отключая все неосновные модули на сайте, и смог сократить время загрузки страницы со списком модулей примерно до 5 секунд. Когда я снова включил группы модулей, оказалось, что наибольшее снижение производительности вызвало семейство модулей CCK (увеличение времени загрузки страницы для списка модулей на 15-20 секунд).

Опять же, у меня есть другие сайты на этом сервере, на которых также запущен CCK (и большинство таких же других модулей), и ничего подобного не происходит. Основное отличие состоит в том, что на этом очень медленном сайте определено множество типов контента и полей CCK - 46 отдельных типов контента и 162 поля CCK.

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

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

Любое руководство приветствуется!

Спасибо, Пол

Ответы [ 2 ]

1 голос
/ 06 августа 2009

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

Второе: импорт типов контента ТАКЖЕ сбрасывает эти кэши, потому что CCK также хочет убедиться, что все обновлено. Это неоптимально, но у вас это есть.

Наконец: количество полей CCK и типов контента, которые у вас есть, влияет на объем работы, выполняемой при очистке и восстановлении кэшей. CCK извлекает всю информацию обо всех определенных типах контента и их полях, создает структуру данных для их описания и использует эту кэшированную версию для дальнейшего использования. С сотнями полей и десятками типов контента восстановление этого кэша данных занимает больше времени, что усугубляет задержки, которые вы видите на странице модулей и при импорте новых типов контента.

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

0 голосов
/ 11 августа 2009

Это тот же ответ, который я сделал на другой вопрос Drupal; Если ответ Итона не решил вашу проблему, возможно, вам стоит взглянуть на модуль Views и перестроить динамическое меню. Каждый раз меню перестраивается, что приводит к сотням или даже тысячам запросов. В зависимости от того, как сделаны объединения, вы можете получить два одинаковых объединения в одинаковых таблицах, что приведет к удвоению количества запросов. Более подробную информацию можно найти здесь

...