Тестирование на производительность коммерческих CMS (NetCat vs Bitrix vs UMI)

Последнее время на хабре достаточно, часто подымается вопрос коммерческих CMS.
Глядя на все дебаты по поводу коробок, да и по долгу службы, мне стало интересно, какую CMS стоит выбрать для ядра серьезного проекта с высокой посещаемостью, если выбирать из коммерческих «русских» коробок. Я говорю именно ядро потому как проекты, такие как auto.ru, gdeetotdom.ru и др. на стандартном функционале CMS не поднять.

Сейчас многие из хаброжителей с недовольством крикнут: «Что за бред, зачем использовать коробку в таких проектах? Нормальные пацаны пишут с нуля!» — Да, конечно, множество высоконагружаемых проектов так и делались, кто то писал с нуля, кто-то использовал фреймворк, кто-то брал друпал и в результате от него оставлял только структуру файлов, а все остальное переписывал до неузнаваемости. Скажу только одно, этот холивар для другого топика, иногда есть куча аргументов, чтобы использовать именно коробку. А чтобы хоть как то подтвердить свои слова, посмотрите уже упомянутый ранее gdeetotdom.ru — CMS Bitrix Средняя посещаемость: 30 000 уникальных посетителей.

Хочу сразу заметить, что все описанное далее только мое личное мнение, я старался максимально субъективно выставить оценку каждой из CMS, постараясь забыть о собственных предпочтениях опираясь только на голые факты.

Задача


Мы сделаем средний каталог информации (ведь, сайты упомянутые ранее таковыми грубо говоря и являются, только немного побольше). И будем проверять на сколько быстро будет генерироваться страница на сервере, при следующих вариантов вывода информации в основной блок:
  • Вывод последних 50 элементов каталога
  • Вывод последних 150 элементов каталога
  • Вывод 50 случайных элементов каталога
  • Вывод 150 случайных элементов каталога
  • Вывод 50 элементов удовлетворяющих условию поиска
  • Вывод 100 элементов удовлетворяющих условию поиска
Вообщем идея проста, чем быстрее генерируется страница, тем нам будет в будущем проще поддерживать систему на плаву, когда на сайт поломятся больше 50.000 чел в день.
Скорость генерации страницы будет основным критерием теста, но также я рассмотрю не очень подробно некоторые специфические моменты каждой из CMS.

Испытуемые


Я выбрал 3 CMS (выбор пал исходя из личного опыта, а также популярности CMS):
Скажу честно я испытываю достаточно большую любовь к UmiCMS, не буду подробно описывать почему, но все последние проекты мы делали исключительно на ней. Далее я постараюсь забыть о своих привязанностях и постараюсь быть максимально субъективным.
Изначально должна была быть в тесте еще HostCMS, но вспомнив, что стандартными средствами модуля информационные системы, не возможно сделать сложную фильтрация элементов (Это подтвердила служба поддержки HostCMS) решил отказаться от нее.

Наполнение БД

В этой задаче нам поможет, замечательный магазин OZON, веб мастерам он предоставляет XML представления своего каталога, мы возьмем каталог Бизнес литературы — 10435 записей. Можно было бы конечно взять и всю бд озона, но мой старенький мак, начал помирать и от 23Mb текстового файла, а что бы с ним стало обрабатывая >100мб текста одному богу известно).
БД в XML у нас есть, осталось только написать правильное XSLT преобразование, которое вернуло бы нам нужные запросы INSERT'ов в БД для каждой из CMS. Как раз еще и посмотрим, хорошо ли описана структура БД CMS в документациях для разработчиков испытуемых систем.

Поле битвы

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

Шаблон вывода информации




Тестирование CMS


1C Битрикс
До этого, я только читал недовольные комменты про эту CMS, кто то с пеной у рта кричал, что это зверь тормознутости, кто то говорил, что я разработчик повидавший многое и Битрикс не самое худшее, а даже лучшее на чем стоит строить не тривиальные проекты.
Вообщем начиная работать с ней, я изначально настроен был на худшее.
Во время установки CMS отказалась устанавливаться UTF-8 кодировки, не хватало какого модуля Apach.
Проблем с натягиваньем тестового шаблона не возникло, иногда всплывал некий ужас: что за переменные натыканы в свойствах модулей, что за переменные в шаблонах компонентов. Поначалу испытывал некий дискомфорт в поиске ответов на свои вопросы, но я уверен, как только начнешь более глубоко работать с системой, «привыкнешь» к ее логики и станет проще(впрочем данное убеждение подходит ко всем CMS теста)
Хочу заметить, у меня постоянно играли вопросы «инженера»: «А что будет если тыкнуть сюда? А как тут сделать вот так?». Это, конечно, здорово, но не все такие как я.
Наполнение бд тоже не составило труда, хотя в доках я не нашел детального описания структуры БД (я плохо искал), метод научного тыка, быстро привел меня к правильному результату.
Порадовало большое сообщество, зачастую можно найти ответы на многие вопросы на форуме.
Результаты тестирования

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

NetCat
Столкнулся я с этой системой первый раз, но заочно достаточно хорошо был с ней знаком (Привет Оксане Богомаз)
Благодаря документации, достаточно быстро разобрался, что в ней да как.
Но бывало, когда логику разработчиков я просто не понимал и вроде бы с банальной задачей, такой как изменение дизайна компонента я завис на 40 минут в поисках решения.
Постоянно путался с шаблонизатором. Часто встречались проблемы с полным моим непониманием работы CMS. Вообщем много мелочей которые сделали работу по натягиванию шаблона мукой.
Благодаря хорошему описанию структуры БД, быстренько наполнил ее тестовыми данными и начал свои тесты.

Результаты тестировани

Вывод
Достаточно запутанная система, чтобы натянуть шаблон я прокавырялся с ней больше всего времени. Постоянно испытывал дискомфорт из за плохого, на мой взгляд, интерфеса админа.
Но ставлю 5+ за скорость работы данной CMS, она показывала достаточно шустрое выполнение скриптов на моем виртуальном хостинге
UmiCMS
Установка прошла без каких либо проблем. Достаточно долго разбирался как наполнить БД моими тестовыми записями, опять же спас метод тыка, как и в случае с Битрикосом, но времени на это у меня заняло намного дольше.
Так как я уже имел опыт работы с данной CMS, проблем с интеграцией нашего шаблона у меня не возникло.Выбрал XSLT шаблоназатор просто потому что питаю любовь к данному технологии.
Хотя, конечно, в рамках данного теста стоило провести исследования влияет ли XSLT шаблонизатор на скорость генерации страницы, но я отказался от этой идеи (может в будущем еще поиграю) по причине того что достаточно часто, на форуме поддержки видел ответ от UMI CMS, что данный шаблон нельзя реализовать по средствам TPL — шаблонизатора, а ведь мы хотим полной свободы в дизайне, поэтому +1 к выбору XSLT.
Результаты тестировани

Вывод
Когда в бд меньше 1000 объектов — все летает, но как только каталог начинает разростаться начинаются достоточно серьезные тормоза, это видно из таблицы. Често говоря очень растроен результатами, но скажу честно помимо долгого времени генерации, данная система по моему мнению не приспособлена к работе с большим количеством информации (большое количество страниц — объектов) вообще

Сводная таблица + Окончательные выводы


Победу в нашем тесте одержала NetCat с хорошим отрывом, послее нее идет всеми обажаемый Битрикс, ну а тройку замывает моя любимица UmiCMS
Если говорить, какую CMS выбрал бы я для большого портала, то я с уверенностью могу сказать, что теперь после этого теста, я сделаю свой выбор в пользу Битрикса, он конечно проиграл в производительности NetCat, но у него много плюшек которые сыграли ему на пользу! Ну а сайты с небольшим количеством объектов, так и будем делать на UmiCMS


0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.