Вы здесь

Друпал 5: Скорость

С выпуском Друпала 5, вы могли бы задаться вопросом, какая версия Друпала быстрее — последний выпуск в ветке Друпал 4.7 или новый Друпал 5?

Тестовые настройки

Я установил Друпал 4.7 на сайт с 2 000 пользователями, 5 000 документами, 5 000 альтернативными путями этих документов, 10 000 комментариями и 250 терминами в более чем 15 словарях.

Потом я настроил главную страницу так, чтобы на неё выводилось 10 документов, включил несколько блоков в левой и правой колонках, добавил несколько пунктов меню в основные ссылки и добавил форму поиска наверх страницы. Я также сделал страницу контактов используя стандартный модуль Contact. Иллюстрация ниже показывает как выглядела моя главная страница.

 скорость

Кроме того я сделал точную копию сайта на Друпале 4.7 и обновил его до последней версии Друпала 5. Результат — два идентичных сайта; один на Друпале 4.7, другой на Друпале 5.

Тесты проводились на 3-х летнем Pentium IV 3Ghz с 2 ГБ памяти и установленной ОС Gentoo Linux. Я использовал архитектуру по умолчанию со следующими программами: Apache 2.0.58, PHP 5.1.6 с APC и MySQL 5.0.26. Была сделана только самая необходимая настройка. Мой тест ограничивала только вычислительная мощностью процессора, а не скорость каких-либо устройств или действий.

Чтобы определить, сколько запросов в секунду может обслуживать такая конфигурация, использовалась инструкция ab из Apache 2.x с 20 одновременно выполняющими запрос клиентами.

Кеширование страниц

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

Представляя тестовые результаты, я разделил результаты для кешируемых страниц и некешируемых страниц. Такое разделение позволит вам прикинуть результаты для своих сайтов на Друпале.

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

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

Результат

 скорость

Количество страниц обрабатываемых в секунду. Чем выше график, тем лучше

Иллюстрация выше показывает, что генерирование страниц в Друпале 5 на 3% медленнее чем в Друпале 4.7. Однако, когда запрашивается кешируемая страница при включённым нормальным режиме кеширования, Друпал 5 на 73% быстрее чем Друпал 4.7 и на 268% быстрее когда включено агрессивное кеширование.

Что это значит для сайтов на Друпале 5? Эффективность использования кеширования страниц в Друпале зависит от множества параметров — времени хранения кеша, количества вошедших в свой аккаунт посетителей, установок прав доступа и так далее. Для сравнения разных конфигураций Друпала, мы изменили настройку Друпала 4.7 и Друпала 5, таким образом, чтобы мы могли смотреть на работу для диапазона неудачных обращений к кешу страниц.

 скорость

Относительное сравнение работы Друпала 5 в режиме нормального кеширования в сравнении с кешированием в Друпале 4.7. Ошибки 0% означают, что все запросы страниц приводят к удачному обращению к кешу и что из кеша можно получить все страницы. Ошибки 100%, что все запросы страниц приводят к неудачному обращению к кешу и мы должны генерировать все страницы заново.

Иллюстрация выше показывает улучшение работы Друпала 5 по сравнению с Друпалом 4.7. Мы видим, что сайты на Друпале с малым количеством неудачных обращений к кешу (типичные статические сайты на Друпале, к которым обращаются анонимные посетители) будут значительно быстрее на Друпале 5. Однако, сайты на Друпале где больше чем 1 из запросов на 2 страницы приводит к неудачному обращению к кешу (типичные динамические сайты на Друпале с большим количеством вошедших в аккаунты пользователей) будут немного медленнее по сравнению с точно таким же сайтом на Друпале 4.7.

Мне эти графики говорят, что для большинства сайтов на Друпале, обновление до Друпала 5 приведёт по крайней мере к небольшому ускорению работы — особенно, если вы должным образом сделаете настройку времени хранения кеша страниц. Кроме того они показывают, что для Друпала 6, нам надо смотреть на улучшение времени генерирования страниц, когда кеширование отключено. Давайте это обсудим.

Несколько комментариев к статье

7 февраля 2007 — 19:25. 2bits — Khalid:
Вот три основных дополнительных модуля работающих с кешем:

Первые два работают со стандартной установкой Друпала. Последний с модернизированным API, с одним модулем, использующем его (модуль Panels).

7 февраля 2007 — 19:43. ted:
Дрис, превосходная работа!

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

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

Так, в то время как могло бы быть на 3% медленнее запрос страницы в 5-ой версии, я буду утверждать, что страницы фактически открываются быстрее (например, загружаются быстрее) из-за таких вещей как препроцессор CSS и mod_expires cashing, это лишь немногое из того, что можно сказать.

7 февраля 2007 — 21:27. Dries:
Ты прав Тед. Этот тест не даёт полной картины и не учитывает некоторые важные элементы внесённые в Друпал 5. Через несколько недель (как найду время), я попробую провести новый тест с более обширной/точной настройкой — возможно основанный на Apache JMeter. Посмеёмся! :)

8 февраля 2007 — 01:58. Том:
Я отложил обновление, но это успокаивает одно из моих опасений (что Д5 был бы медленнее).

Я хотел бы увидеть такой тест:

  • CCK против родных типов документов
  • Views включен/выключен
  • Statistics включен/выключен

Материал как этот. Если у тебя есть время, чтобы сделать какое-нибудь эталонное тестирование такого типа, я хотел бы видеть результат! Я люблю компанию Views/CCK/Contemplate — очень мощная комбинация. Перефразируя Стэна Ли из комикса Spider Man, «с хорошой системой мы должны иметь хорошую нагрузку на сервер». Я всегда любопытен, но насколько возросла нагрузка.

8 февраля 2007 — 07:19. Луис:
Я думаю, что эти различия являются зверскими. Я не знаю, хороши ли статистические данные, но иначе я должен сказать, что люди занимающиеся разработкой Друпала очень хороши. Я очень рад, что использую эту систему.

8 февраля 2007 — 08:15. Антонио Ортиз:
Я не был уверен относительно Друпала 5, но теперь я с ним.

8 февраля 2007 — 14:47. bhaskar:
Ты пробовал также включать параметр «Собирать и сжимать CSS» в Друпале 5? Это должно дать двукратные выгоды, (a) это сохраняет пропускную способность и (b) это позволяет Друпалу обрабатывать большее количество запросов в секунду.

Я очень интересовался бы статистикой пропускной способности для Друпала 4.7 и 5.0.

Спасибо за хорошую работу.

9 февраля 2007 — 16:45. Крис Джонсон:
Я предпочел бы видеть тесты, которые ближе к той настройке, которую большинство людей видит в планах хостеров, скорее всего, что большинство сайтов на Друпале упадут.

Могло бы потребоваться некоторое исследование, чтобы получить точную картину относительно того, на что могла бы быть похожа средняя настройка. Но мой опыт говорит, что большинство хостеров ещё не используют MySQL 5 и PHP 5, а также APC.

Таким образом, мне любопытно, как этот же самый тест смотрится с MySQL 4.1 и PHP 4.3.10. На первый взгляд, это похоже на результат, который был бы подобным. Но возможно нет.

Я действительно рад видеть данные по работе кеша. Некоторые сайты, которые я делаю, имеют большинство трафика, сгенерированного анонимными посетителями. Другие сайты, с которыми я имею дело, имеют 100% вошедших в аккаунты пользователей; анонимные посетители на них могут видеть только страницу входа в аккаунт. Похоже, что нам, вероятно, придётся оптимизировать наши сервисные стеки, когда мы попробуем переместить этих людей на Д5.