Всем Привет! Очень хочется узнать о том как drupal работает с память и как уменьшить потребность в памяти! Сайт разрабатывается (т.е. еще нету посетителей), сам он базируется на VDS где 1GB RAM. Сайт о городе: много очень разделов, нод, баннеров, досок объявлений, фотографий , карт итд...
Вот некоторые из этих модулей:
Ad, Administration menu, CCK, FileField, ImageField, Location CCK, Videofield, Chat, Custom Breadcrumbs, Display suite, GeoNames API, GMap, Nodewords, Rules, Smileys, Google Analytics,jQuery Update, Views, Workflow,Ban Unpublish, CKEditor, Classified Ads ,DHTML Menu , Flash node, Flowplayer API, IMCE, Node expire, Pathauto, Search 404, Superfish, Token ... +3/4 модулей ядра Так же есть и свои модули, которые работают с базой данных модуля объявлений ; модули для наложения картинок и другой фигни на google-карту. Вообщем весь запрогался)).
В .htaccess стоит у меня 124 мб для друпала
<?phpphp_value memory_limit 124M?>
А теперь центральный вопрос! Через ssh спокойно можно посмотреть кол-во свободной памяти и в среднем оно там 250-300 мб из 1024мб! Иными словами mysql+apache+drupal кушают 650-700 мегов!
Куда девается вся память?! И как сделать так, чтобы друпал не жрал много памяти?
И есть ли способ подсчета памяти ?
Комментарии
Друпал не может больше сожрать.
Хотя 128-мало для большого портала.
Смотрите top по ssh. Может, что увидите.
top, и всё станет ясно
Вот он результат запроса top, при условии что я сейчас при помощи putty переписываю 1 файл на сервере и мучаю сайт))
снимок результата top-a прилагаю
кто-нибудь может дать рекомендации к действию?
Надо тюнить настройки апача и mysql.
И вообще по хорошему ставить nginx + fastcgi php связку.
Покупая ВДС, вы должны быть готовы к этому. Должны иметь навыки администрирования или иметь среди другей админа, который за пиво вам настроит. Или платить деньги кому то, чтоб сделал.
вы пишите очевидные вещи про настройку апача и mysql, но что еще нужно?!
1. Избавиться от qmail, это напрямую к делу не относится, но избавит от дальнейшего гемороя. Плеск если он достаточно свежий умеет прекрасно работать с postfixом.
2. Нормально настроить окружение, тут есть альтернативы:
-Избавиться от апача в пользу nginx+php-fpm, это самый разумный вариант, но подразумевает то, что от плеска надо будет избавиться.
-Поставить nginx как фронтэнд и сильно ограничить кол-во деток апача, чуть хуже, но тоже вариант.
В случае Плеска, nginx вставляется пробросом портов.
-Ограничить кол-во деток апача на разумном уровне и выкинуть из апача и php все лишние модули.
Самый простой, но не самый эффективный путь
-Сделать предыдущее и использовать mod-fcgid и php в режиме fastcgi.
Не помню, как плеск относится к mod-fcgid, вроде он умеет с ним работать. Плюс в том, что не к каждому процессу апача будет приделан php, что уменьшит потребление памяти.
И на последок, если вы смотрите на free как на свободную память, вы не правы - по возможности линукс кушает физическую память под кеширование, соответственно при необходимости освобождает её для приложений.
Если хочется подробнее, пишите в аську - объясню.
boost?
опыт показывает для толстых проектов 1Гб мало, 2Гб тоже не фонтан((
Что подразумевается под толстым проектом?
При нормальной настройке скорее упрёмся в дисковый ввод/вывод (который часто на VPS не фонтан), или процессор, чем в гигабайт оперативки. Конечно хорошо бы больше, но скорее для кеширования уровня fs например. Отедает больше всего памяти обычно не работающие в данный конкретный момент скрипты, их много быть не может в связи с ограничением по вычислительным ресурсам, а десятки процессов апача бесполезно болтающихся или отдающих статику и результаты работы скриптов медленным клиентам. От этого хорошо помогает правильная настройка и фронтэнд - объём необходимой памяти заметно снижается. Ещё много памяти может отесть Mysql, если задрать сверх всякой меры размеры различных буферов, что часто не имеет смысла.
Под "толстым" проектом можно подразумевать проект, перегруженный модулями(хотя начинаешь разбирать, вроде все по делу, все нужно... а вот нужно еще это и это;))) и к фейсбуку прикрутить, и финтишлюшку поставить). Если верить devel, коробочная установка Drupal хавает до 8М(точно не помню), после "настроечек" процесс разрастается у кого как, и по 100М, и по 250М и по 315М и более, что сразу сказывается на нехватке оперативы. без акселератора сервак сразу начинает глючить, с акселератором надо еще и за количеством деток апача присматривать, потому что начинает свопить и медленно "умирает". Первое с чего начинает техподдержка - не хватает оперативы, 2Гб это мало, кеширование невозможно настроить и т.д. Поднимаешь память, тогда начинает упираться в процессор, техподдержка заводит опять песню или о разгоне железа, или про оптимизацию скриптов, начинается перекапывание инета по запросу "оптимизация". Все равно в итоге после всех настроек при посещении переваливающем за 1000 незарегистрированных посетителей сайт начинает "тупить"(зато хоть уже не падает), хотя казалось бы раздает уже статику... и тут мысли начинают витать в сторону... как бы правильно выразиться, на it-patrol есть такой инструмент как limiter(упс, реклама), техподдержка обещает сделать тот же инструмент, но на бесплатном ПО(для них это выгоднее). и тут начинаешь вкуривать философию Drupala, сервер под него должен иметь ювелирную настройку(помимо требованиям к железу) иначе много ресурсов, которых так не хватает, расходуется понапрасну.
Если 1 процесс друпала разрастается до 200+ Мб, и планируется приличная посещаемость, то надо что-то делать с проектом в первую очередь а не с сервером... Присматривать за кол-вом деток апача не надо, надо ставить фронтэнд и ограничивать их кол-во или вообще избавляться от апача. 1000 незарегистрированных посетителей вырождается в статику и тут надо просто оставить достаточное кол-во памяти под кеш ФС и правильно настроить кеширование со стороны друпала, по возможности вынести кеширование из БД. Еще неплохо при большой нагрузке ограничить кол-во запросов в единицу времени с 1 ip, чтобы разные злые боты не делали пиковой загрузки.
Качественная настройка сервера нужна всегда, друпал никаким исключением тут не является.
П.С. Что такое limiter на it-patrol,т.е. что он собственно делает?
Это наша самописная система, которая рулит нагрузкой на сервантах и не даёт совсем ипануццо серванту в случае жестяка http://www.drupal.ru/node/38104 + много всяких плюшек.
На самом деле,я не представляю какой набор модулей должен быть чтобы 1 процесс жрал 300 метров.
Даже инферно с его 250 модулями укладывается на ура в 256, по крайней мере он не жаловался. Но у нас правда акселлетор, что сокращает потребление рамы. В остальном слушать умного человека:
всё нормуль, настроил)))