Решил проверить, как модули, установленные на этом блоге, влияют на производительность Drupal.
Вооружившись утилитой ab из состава Apache 2.2, провел серию тестов. Отключая модуль за модулем, записывал число запросов, которое может обработать Drupal за одну секунду.
Ось Y — это число запросов в секунду (Requests per second).
Пункт "Удаление всех модулей" — означает что модули были деинсталлированы на странице admin/build/modules/uninstall.
Пункт "-сниппет Разделы" — отключён блок для вывода списка разделов.
Пункт "-сниппет Последние комментарии" — отключён блок для вывода списка последних комментариев.
Видно, что основные модули создающие нагрузку, это дефолтные — Search, Taxonomy, Comment, Locale и Menu. Так же заметно, что друпал начинает задыхаться с числом установленных модулей более 30.
На сервере установлен eAccelerator. В Drupal отключено кэширование.
Комментарии
А у меня 200 модулей. Дохлый совсем Друпаль!!!
приинклудить 200 файлов это любая cms-ка загнётся)
Кажись в D7 файлы с кодом подключаются только если используется их код.
Эта мера должна снять зависимость производительности от количества модулей.
надо проверить
к сожалению всё осталось по прежнему — грузятся все
.module
файлы включённых модулей. для проверки можно создать тестовый модуль с единственной строчкой:и посмотреть журнал (admin/reports/dblog)
На последнем проекте отключил модуль "menu", и дискомфорта не испытываю.
Локаль не включаю уже на трех проектах, пока обхожусь без ущерба для функциональности.
По сути говоря - для чего нужен модуль меню?
Самое главное - для того чтобы из админки (веб-интерфейса) юзверерь (админ или модатор) мог что-то поменять.
Если можно обойтись без веб-интерфейса - то лучше обойтись без него. Можно сделать меню на более низком уровне, чтобы оно вообще не грузило базу, процессор и не жрало память. Да, меню работает с пермишенсами, ну и что? Насколько часто нужно ограничить пункты меню в зависимости от роли? У меня совсем не часто, кроме того в API есть-же функции, проверяющие права доступа.
а если включить locale и перевести с помощью него только те строки,которые необходимы пользователю? в этом случае нагрузка будет не очень большой? (например 20 строк)
Добавить комментарий