Скорость генерации страниц. Особенности работы с БД.

Главные вкладки

Аватар пользователя Victor Victor 19 апреля 2007 в 1:57

Кто имеет опыт в оптимизации производительности работы Drupal. В частности его форума. Крайне медлено генерируются страницы. Пожалуйста откликнитесь в какую сторону надо копать и где еще можно выжать секунды генерации страниц. В данный момент скорость генерации некоторых страниц зашкаливает за 5 секунд - это норма или нонсенс?

Комментарии

Аватар пользователя SadhooKlay SadhooKlay (не проверено) 19 апреля 2007 в 2:25

Незнаю, что там у вас с контентом (я про 5 с.), но несколько снизят время генерации 3 шага.

1. Отключите у Apache поддержку (инициализацию, поиск, чтение) htaccess, перепишите из htaccess настройки в раздел вашего вуртуалхоста. Из секции Virtualhost настройки считываются один раз, при старте демона, а из хтакцеса при каждом обращении клиента.
2. Заставьте Apache не вести логи (AccessLog, ErrorLog) — этим должна заниматься отдельная машина, с отдельным сервером.
3. Подумайте о кэшировании.

Как вариант, можно поставить более быстрый сервант : )

Аватар пользователя axel axel 19 апреля 2007 в 11:51

Какова посещаемость сайта и что за хостинг? Отдельный сервер или shared?

Кроме системного кеширования (APC, XCache, eAccelerator и др.) стоит настроить кеширование в друпале. Во-первых проверить что кеширование друпала вообще включено и может быть переключить в режим агрессивного кеширования. Во-вторых поставить и настроить blockcache - снижает нагрузку при выводе блоков. Можно также попробовать модуль кеширования boost, но он пока очень нестабилен для Drupal 5.

Аватар пользователя korj korj 19 апреля 2007 в 17:14

посещаемость - 100 хостов, хостинг шаред (уже третий сменил - на всех жалуются на нагрузку).
block cache - спасибо попробую.
минимальное время жизни кеша - на что оно влияет?

Аватар пользователя axel axel 20 апреля 2007 в 12:21

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

Мин. время жизни кеша, это сколько данные будут в нём лежать до обновления. Т.е. даже если данные уже другие отдаваться будут принудительно старые из кеша. При низкой посещаемости (100 хостов) это не требуется.

Также рекомендую поставить модуль devel и включить в нём лог запросов - там отображаются все SQL запросы от друпала и время их исполнения. Тогда можно выявить, что тормозит.

Аватар пользователя Victor Victor 21 апреля 2007 в 0:03

Всем спасибо за советы.

Кэширование помогло снизить время генерации страниц для анонимных пользователей до 1-2 секунд.

Но для залогиненых пользователей это не помогает Smile Время генерации страниц для них оставляет желать лучшего (в среднем 3-6 секунды). Особенно при отправке сообщений (фильтры стоят стандартные) задержки доходят иногда до 15 секунд.

На данный момент в системе 30 пользователей.

Буду курить модуль devel.

Также убрал из page.tpl.php строку <?php print $styles ?> и перенес все нужные стили в один файл. Это позволило уменьшить количество запросов на сервак. Вроде бы в друпале есть похожая функция в настройках для объединения css. Но я так и не разобрался как она себя ведет: генерирует ли она каждый раз новый файл или сохраняет его на диске, чтобы клиент по time-метке не скачивал его повторно.

Аватар пользователя korj korj 21 апреля 2007 в 1:01

devel - в среднем 500-1000 ms на страницу
на том же сервере стоит 'голая' пятерка - там 200-300 ms на страницу (страница - полный минимализм - просто пару абзацев, ни одного блока, комментариев и пр)
это нормальные значения?
какие у Вас?

основные тяжелые запросы - locale, drupal_lookup_path , upload_load (это же все стандартное?)

block caсhe - спасибо, попробую