Почему Друпал медленный? - PullRequest
8 голосов
/ 18 мая 2011

Я создал сайт на drupal

Мой сайт насчитывает 7500 пользователей и около (от 20 до 50 без входа в систему) (от 2 до 10 пользователей вошли в систему) онлайн (и это не большой трафик, я думаю)

Сайт находится на выделенном сервере.Я включил настройку производительности от drupal admin, а также установил memcache и eaccelerator

Я просматривал журналы запросов с помощью модуля devel.на каждой странице запускается от 600 до 900 запросов

Когда я установил патч path.inc, чтобы уменьшить количество запросов drupal_look_path().Количество запросов уменьшено до 400

Я также внес некоторые положительные изменения в файл mysql (my.cnf), но все же есть много одинаковых запросов, которые снова и снова запускаются из функции user_load()

У меня включено от 60 до 70 модулей, и все они заполнены.Я не могу удалить модули

Тем не менее, сайт работает медленно, это занимает около 10-15 секунд

Теперь я не знаю, почему сайт работает так медленно

  • Это потому, что у drupal большой код php?
  • Это потому, что он запускает так много запросов на каждой странице?
  • Улучшает ли движок InnoDB производительность?

Пожалуйста, приветствуются любые предложения

Ответы [ 5 ]

9 голосов
/ 18 мая 2011

400 запросов для каждого запроса - это удача (но даже 50+).

Вы должны реализовать html-кэширование.Мой сайт вообще даже не устанавливает соединение с БД.Он просто запускает HTML-файл, кэшированный в файле.

6 голосов
/ 18 мая 2011

Некоторые дополнительные вещи, чтобы посмотреть:

  • Установите инструмент, такой как Yslow / PageSpeed, чтобы увидеть, сколько из этих 10-15 секунд - время клиента и сервера.

  • Установите XhProf (на сайте разработки, а не в реальном времени) вместе с Devel, чтобы увидеть, какие функции используют больше всего времени. Сначала посмотри на это. Изменить, теперь со ссылкой: http://groups.drupal.org/node/82889

  • Использование pressflow может * немного помочь , но, поскольку вы уже используете патч path.inc, вероятно, не так уж и много.

  • Вы упомянули, что установили memcache. Вы также установили модуль memcache и настроили плагин кеша для использования memcache?

  • РЕДАКТИРОВАТЬ: Да, переключение на InnoDB может помочь. Одним из основных преимуществ производительности InnoDB является блокировка на уровне строк (в отличие от блокировки на уровне таблицы MyISAM), что означает, что несколько запросов INSERT / UPDATE для одной и той же таблицы не будут блокировать друг друга, если в этом нет особой необходимости. Тем не менее, InnoDB не работает хорошо из коробки, вам действительно нужно настроить конфигурацию mysql для вашего конкретного сайта. Так что это шаг, который вы должны делать осторожно, после тестирования и оптимизации на сайте разработки. На этом сайте и в других местах уже есть различные вопросы о настройке InnoDB ...

Все остальное зависит от сайта и зависит от используемых вами модулей. Но особенно такие вещи, как сложные настройки node_access и несколько языков (i18n!), Как правило, вызывают медленные запросы и / или их много.

1 голос
/ 04 августа 2011

Не все модули используют механизмы кэширования, которые вы можете включить в области настроек производительности. Стоит попытаться определить, кто из них выполняет самые медленные запросы, и попытаться заставить разработчика (ов) улучшить их.

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

Кроме того, вам нужно посмотреть, позволяют ли ваши настройки MySQL достаточно памяти для выполнения этих запросов. Большинство дистрибутивов MySQL поставляются с разными версиями my.ini, помеченными как «small», «medium», «огромный» и т. Д. Скопируйте «огромный» в my.ini (сначала сделайте резервную копию старого) и перезапустите БД, чтобы увидеть Максимальное использование всех размеров кэша имеет значение. У вас вполне может быть горлышко от бутылки, но может быть трудно понять, какие обстоятельства вызывают его.

То же самое относится и к PHP. Установите memory_limit в php.ini на 500 МБ или что-то в этом роде и посмотрите, поможет ли это. Конечно, вы не сможете сделать это, в зависимости от вашего хостинга, но это устранит одну возможную причину (или нет), если вы можете.

0 голосов
/ 03 декабря 2014

столкнулся с проблемой медлительности друпалов.Но у меня совсем другая проблема, чем упомянутые другие.

Я отключил весь контент, а также заголовок drupal для страницы drupal определенного типа контента.

Тем не менее время, затраченное этой страницей нанагрузка превышает 20 секунд!

Я воспользовался панелями firebug от YSlow и NET.

Посмотрев на них, заметил:

Включение файлов JS и CSS по отдельности занимает от 3 до 2 секунд, и естьпроисходит довольно много включений, в результате это занимает около 20 секунд.

Но я не могу понять, почему включения js и css отнимают так много времени.(в том числе обычные файлы JS и CSS для Drupal Core)

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

Производительность вашего сайта Drupal также зависит от того, насколько хорошо ваша хостинговая платформа настроена для Drupal.Drupal требует специальной оптимизации компонентов стека LAMP.Вы можете попробовать хостинговые компании для Drupal http://www.drupalspecific.com, чтобы ваш сайт работал быстрее.

...