[РЕШЕНО] Drupal хорош, но тормозной до жути

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

Аватар пользователя beerman beerman 14 декабря 2008 в 14:22

Полтора месяца назад, после перехода на 6.х, ощутил значительный скачок в производительности системы в сторону увеличения времени генерации страниц. Доступ к странице модулей вообще начинает доводить до состояния анабиоза.
Танцы с бубном вокруг выделенного сервера не привели ни к какому сколько-нибудь значимому результату.
В состоянии здравого ума и трезвой памяти я сделал вывод о сильно разросшейся системе управления, изначально напичканой излишними модулями и кривой реализацией основных функций/модулей. В частности это касается реализации модулей Views и CCK, на которые 90% пользователей делают основной упор.

Дабы не быть голословным, привожу пример работы drupal на сервере с настройками: CPU 600Mhz, 160Mb memory, 4000Mb disk.
Вывод на главной странице 10 последних записей блога, темизированных через node-blog.tpl.php, в котором просто расписаны div и phint $node->....

данные по devel после трех перезагрузок сервера:
Page execution time was 37415.49 ms.
Page execution time was 35212.13 ms.
Page execution time was 36423.23 ms.

ЗЫ. если кто-то сможет мне объяснить, как заставить drupal работать в 30 раз быстерее - с меня пЫво (или на пЫво через WMR/WMZ)

Комментарии

Аватар пользователя penexe penexe 14 декабря 2008 в 14:37

хехе, еще один) у вас что-то не так с серваком либо кодом, 37415.49 ms. - это анрил.
если вы друпал непоняли то до symfony и Zend Framework... вам как до китая ползком

Аватар пользователя beerman beerman 14 декабря 2008 в 15:03

"penexe" wrote:
symfony и Zend Framework... вам как до китая ползком

друпал я понял. я не пойму откуда такие тормоза. настройки серва я показал. на таких настройках летать должно. код не трогал.

PS. До китая, даже ползком, мне час-два потребуется с перерывами на пЫво.

Аватар пользователя beerman beerman 14 декабря 2008 в 15:00

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

Аватар пользователя argon argon 14 декабря 2008 в 15:12

)). А вас время загрузки вот здесь не пугает? - http://symfony.org.ua/
А вообще... за какое там время вычислительные мощности регулярно удваиваются?
Может проще подождать? ))

И кстати, от вьюс избавится вполне реально. сниппетами теми-же...

Аватар пользователя Evgenij Evgenij 14 декабря 2008 в 15:10

Это может происходить иногда от того что старые модули установлены, от предыдущих версий. Модули от 5 ставят на 6.

Аватар пользователя WiseMan WiseMan 14 декабря 2008 в 15:18

Вообще ситуация ненормальная, ИМХО. Вам просто искать узкое место надо в модулях, например. Путем поочередного отключения.

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

Аватар пользователя gor gor 14 декабря 2008 в 16:07

beerman wrote:
ЗЫ. если кто-то сможет мне объяснить, как заставить drupal работать в 30 раз быстерее - с меня пЫво (или на пЫво через WMR/WMZ)

Я так понял по показаным параметрам у вас вдс, если коротко то на даных параметрах - 160mb RAM запустить что то кроме статики не особо и получится, реальный минимум для ВДСа - 256, на этом еще как то запустится можно.

Вообщем пишите в ICQ или через форму контакт, что реально с делать с оптимизацией вдс - сделаем,
ICQ в профиле.

Аватар пользователя beerman beerman 14 декабря 2008 в 16:09

"VladSavitsky" wrote:
Я увеличивал время выполнения файлов

ну, можно и час разрешить. это выход? скрипты в разы быстрее должны выполняться. а 160 мозгов мало для их выполнения?

Аватар пользователя beerman beerman 14 декабря 2008 в 16:10

"gor" wrote:
Я так понял по показаным параметрам у вас вдс, если коротко то на даных параметрах - 160mb RAM запустить что то кроме статики не особо и получится, реальный минимум для ВДСа - 256, на этом еще как то запустится можно.

вы издеваетесь? для каждого проекта отдельный вдс? данунах Smile

Аватар пользователя beerman beerman 14 декабря 2008 в 16:15

"argon" wrote:
И кстати, от вьюс избавится вполне реально. сниппетами теми-же...

сниппетами?
ничего не напутали?

Аватар пользователя argon argon 15 декабря 2008 в 11:04

>сниппетами?
>ничего не напутали?

Почему же напутал... смотрите сколько полезных и хороших выводов сниппетами делается:
http://setegnom.com/drupal/snippets

Если Вы вьюс для вывода инфы используете... вполне можно заменить.
Скорость по моим ощущениям меняется в разы.

Аватар пользователя batbug batbug 14 декабря 2008 в 16:39

"beerman" wrote:
Дабы не быть голословным, привожу пример работы drupal на сервере с настройками: CPU 600Mhz, 160Mb memory, 4000Mb disk.

вдс-улёт?

"beerman" wrote:
если кто-то сможет мне объяснить, как заставить drupal работать в 30 раз

Для начала включаем eaccelerator. Без него тяжко. Реально тяжко.
Во-2, включаем mysql query cache. Если у вас действительно вдс-улёт, то там изначально в mysql нет кэширования.

Аватар пользователя beerman beerman 14 декабря 2008 в 17:23

"batbug" wrote:
вдс-улёт?

да

-------------------------
Administration Menu

--CCK
Content, Email, FileField, ImageField, Link, Number, Option Widgets,Text, User Reference

--Core
Blog, Blog API, Book, Comment, Contact, Content translation, Locale, Menu, Path, PHP filter, Poll, Profile, Search, Syslog, Taxonomy, Trigger, Upload

--Date/Time
Date, Date API, Date Timezone

--Development
Devel, Devel node access, Theme developer

--ImageCache
ImageAPI, ImageAPI GD2, ImageCache, ImageCache UI

--Javascript tools
Lightbox2

--Messaging
Messaging, Simple Mail

--Notofications
Content Notifications, Notifications, Notifications Lite, Notifications UI

--Organic groups
OG Alias, Organic groups, Organic groups access control, Organic groups actions, Organic Groups Notifications, Organic groups Views integration

--Spam control
CAPTCHA, hidden_captcha, Text CAPTCHA

--Таксономия
Tagadelic

--User Interface
jQuery Update

--Views
Views, Views UI

--Voting
Voting API

--Другой
Flag, Flag actions, Pathauto, Poormanscron, Token

Аватар пользователя beerman beerman 14 декабря 2008 в 17:24

"direqtor" wrote:
А базу проверял? Может какая таблица повреждена...

два друпала установлены параллельно. симптомы одинаковы

Аватар пользователя Dimm Dimm 14 декабря 2008 в 18:53

1. Купи нормальный хостинг - Дома селерон 2500 в 4 раза медленнее чем хостинг Руцентр тариф 300
2. Поставь APC и выдели ему 30-60 мегабайт
3. Оптимизируй базу модуль db_maintenance
4. Конечно же включи кэш mysql

Аватар пользователя WiseMan WiseMan 14 декабря 2008 в 18:05

Poormanscron - а оно вам надо крон таким образом запускать?! Это ж тоже нагрузку создает именно на сайт. Лучше все же через lynx или wget cron.php гонять, ИМХО, у вас же сервер свой.

Аватар пользователя batbug batbug 14 декабря 2008 в 20:36

beerman,

1) это только включенные модули? хмм. отключите Devel node access и Theme developer. Последний особенно тяжелый. Коль вы привели в пример главную, то девелом померьте количество запросов и время на них. Если не трудно - можете и тхт-файлом список всех запросов прикрепить.

2) ну и

"batbug" wrote:
Для начала включаем eaccelerator. Без него тяжко. Реально тяжко.
Во-2, включаем mysql query cache.

Что у вас с этим?

Аватар пользователя gor gor 14 декабря 2008 в 21:35

так к слову к советам с кешами аля APC, eaccelerator, mysql table cache и тому подобное.

Все выше перечисленые методы требуют памяти, оперативной памяти и побольше.
В указаных параметрах ВДСа указано что всего 160mb.
и в эти 160mb надо чтоб влез mysql, apache,ssh часть других сервисов что есть... а если прибавить системы кеширования, получим критическую нехватку памяти.

выводы?

Аватар пользователя theСанитар theСанитар 14 декабря 2008 в 21:52

В данном случае, на 160 мегах, удивительно не то, что оно тормозит, а то, что вообще работает... Или 160 мег -- это не скрипт? Если нет -- увеличивайте.

Аватар пользователя Vladimir_VVV Vladimir_VVV 14 декабря 2008 в 23:47

160 памяти сервера это полный сакс. Только себя мучать, даже mysql не закешировать как следует.
У меня на один запрос страницы нужно ~50мб для php плюс кеш mysql, и что три подряд запроса (форкнутые php висят в памяти) и все.

Вобщем при таком сервере нада nginx + fast-cgi (без апача) с 2-3 форками php и остальное "забить" кешем mysql(не заежая на swap), при этом имейте ввиду что выделение и использование памяти зависит от системы виртуализации(в большинстве случаев 4:1, то есть при нормальном раскладе при выделении для php 48мБ у вас будет занято ~12 хотя сервер покажет >48)

Аватар пользователя beerman beerman 15 декабря 2008 в 3:41

"WiseMan" wrote:
Poormanscron - а оно вам надо

раз в сутки ночью нагрузку не создает.

"batbug" wrote:
Для начала включаем eaccelerator. Без него тяжко. Реально тяжко.
Во-2, включаем mysql query cache.

eAccelerator включил. результат:
Memory used at: devel_init()=0.33 MB, devel_shutdown()=11.9 MB.
вместо
Memory used at: devel_init()=1.68 MB, devel_shutdown()=28.2 MB.

mysql cache query включен
query_cache_type=1
query_cache_size=5M

"v1adimir" wrote:
пресловутый экстремум -- "drupal гавно"? ;)

я этого не говорил.

Аватар пользователя batbug batbug 15 декабря 2008 в 5:17

"beerman" wrote:
eAccelerator включил. результат:
Memory used at: devel_init()=0.33 MB, devel_shutdown()=11.9 MB.
вместо
Memory used at: devel_init()=1.68 MB, devel_shutdown()=28.2 MB.
mysql cache query включен
query_cache_type=1
query_cache_size=5M

Время генерации страницы насколько уменьшилось?

"gor" wrote:
В указаных параметрах ВДСа указано что всего 160mb.
и в эти 160mb надо чтоб влез mysql, apache,ssh часть других сервисов что есть... а если прибавить системы кеширования, получим критическую нехватку памяти.

Верно, на улёте я тоже докупал памяти, до 256 метров. Но это я ставил nginx и полностью отключал апач.

Аватар пользователя batbug batbug 15 декабря 2008 в 10:19

Ок. Увеличение ОЗУ и размеров кэша мускула и кэша eAcceleratora позволит еще несколько ускорить загрузку. Теперь можно посмотреть и на лог запросов к БД из Develа

Аватар пользователя beerman beerman 15 декабря 2008 в 12:53

"batbug" wrote:
Теперь можно посмотреть и на лог запросов к БД из Develа

Executed 247 queries in 1142.66 milliseconds. Queries taking longer than 5 ms and queries executed more than once, are highlighted. Page execution time was 5824.8 ms.

Аватар пользователя batbug batbug 15 декабря 2008 в 14:30

Ну вот, в принципе, на этом наверное, всё, на вдс-улёте без увеличения памяти, и без перехода на nginx быстрее не станет.

Аватар пользователя Смоленский Смоленский 6 января 2009 в 12:47

Что то вы меня запугали, у меня на простом виртуальнике 3 сайта на wordpress летает (на каждом ~50-100 посетителей в сутки). Для drupal выделенный по вашему обязательно как минимум :(, это какие параметры у хостинга должны быть, чтобы те же три сайта на drupal работали ?

Аватар пользователя v1adimir v1adimir 6 января 2009 в 13:46

Smolenskiy wrote:
Что то вы меня запугали, у меня на простом виртуальнике 3 сайта на wordpress летает (на каждом ~50-100 посетителей в сутки). Для drupal выделенный по вашему обязательно как минимум :(, это какие параметры у хостинга должны быть, чтобы те же три сайта на drupal работали ?

3 сайта по 50-100 уников... да любой шаред потянет конечно! но eaccelerator лучше включить. )

Аватар пользователя Смоленский Смоленский 7 января 2009 в 9:18

Спасибо, Владимир успокоили. Но где тогда та грань, когда drupal виртуального аккаунта на хостинге не хватит и придётся задумываться о VPS и VDS. Для примера могу сказать, что при прямых руках и нормальном хостинге, wordpress можно дотянуть до 4000, и это та грань на которой уже начнётся поиск VPS хостинга, можно и больше но это уже из разряда хождение по лезвию. Но опять же это достигается с помощью различных плагинов созданными энтузиастами и включает в себя отключение проверки обновлений, настройкой нормального кеша и другим незначительным тюнингом. Если брать, чистый wordpress без напильника, то этот порог начинается с 1000 посетителей.

Аватар пользователя batbug batbug 7 января 2009 в 16:18

"Смоленский" wrote:
Что то вы меня запугали, у меня на простом виртуальнике 3 сайта на wordpress летает (на каждом ~50-100 посетителей в сутки). Для drupal выделенный по вашему обязательно как минимум :(, это какие параметры у хостинга должны быть, чтобы те же три сайта на drupal работали ?

Если на сайте не требуется регистрировать пользователей, то и не возникнет никаких проблем. Ваши 50-100 человек - это гости или зарегенные пользователи?

Аватар пользователя Смоленский Смоленский 7 января 2009 в 20:55

batbug, вопрос разъяснил Владимир, но вы меня заинтриговали, что при регистрации появятся проблемы. Отвечаю на ваш вопрос, простые комментарии ни чего больше. Но всё таки хотелось бы получить информацию на предыдущий мой вопрос по поводу грани виртуального и VPS у drupal подобного материала пока не могу найти только информацию, что максимум drupal может выдержать 50 000 но это точно не виртуальный аккаунт Smile

Аватар пользователя batbug batbug 8 января 2009 в 8:13

"Смоленский" wrote:
batbug, вопрос разъяснил Владимир, но вы меня заинтриговали, что при регистрации появятся проблемы. Отвечаю на ваш вопрос, простые комментарии ни чего больше.

Чем больше на сайте ходит залогиненных пользователей, тем хуже будет сайту.

Аватар пользователя Geldora Geldora 8 января 2009 в 11:22

Обычно говорят, что 500 посетителей в день = переход на ВПС.

Еще говорят, что переход на ВПС - это когда в час около 10 зарегенных ходит.

У меня сейчас больше чем 500, но пока шаред выдерживает, только пришлось попросить увеличить пхп_мемори_лимит.

И еще - говорят, что лучше заплатить за ВИП-шаред, чем за небольшие ВПС, особенно если не умеешь их настраивать.