Куда девается вся память? И как её вернуть обратно))

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

Аватар пользователя aksernar aksernar 26 ноября 2010 в 22:43

Всем Привет! Очень хочется узнать о том как 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 мегов!

Куда девается вся память?! И как сделать так, чтобы друпал не жрал много памяти?
И есть ли способ подсчета памяти ?

Комментарии

Аватар пользователя vitg vitg 26 ноября 2010 в 22:50

"aksernar" wrote:
<?phpphp_value memory_limit 124M?>

Друпал не может больше сожрать.

Хотя 128-мало для большого портала.

Смотрите top по ssh. Может, что увидите.

Аватар пользователя aksernar aksernar 10 ноября 2015 в 11:47

Вот он результат запроса top, при условии что я сейчас при помощи putty переписываю 1 файл на сервере и мучаю сайт))

снимок результата top-a прилагаю

кто-нибудь может дать рекомендации к действию?

Аватар пользователя gor gor 27 ноября 2010 в 0:41

Надо тюнить настройки апача и mysql.

И вообще по хорошему ставить nginx + fastcgi php связку.

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

Аватар пользователя bsyomov bsyomov 27 ноября 2010 в 1:56

1. Избавиться от qmail, это напрямую к делу не относится, но избавит от дальнейшего гемороя. Smile Плеск если он достаточно свежий умеет прекрасно работать с postfixом.
2. Нормально настроить окружение, тут есть альтернативы:
-Избавиться от апача в пользу nginx+php-fpm, это самый разумный вариант, но подразумевает то, что от плеска надо будет избавиться.

-Поставить nginx как фронтэнд и сильно ограничить кол-во деток апача, чуть хуже, но тоже вариант.
В случае Плеска, nginx вставляется пробросом портов.

-Ограничить кол-во деток апача на разумном уровне и выкинуть из апача и php все лишние модули.
Самый простой, но не самый эффективный путь

-Сделать предыдущее и использовать mod-fcgid и php в режиме fastcgi.
Не помню, как плеск относится к mod-fcgid, вроде он умеет с ним работать. Плюс в том, что не к каждому процессу апача будет приделан php, что уменьшит потребление памяти.

И на последок, если вы смотрите на free как на свободную память, вы не правы - по возможности линукс кушает физическую память под кеширование, соответственно при необходимости освобождает её для приложений.

Если хочется подробнее, пишите в аську - объясню.

Аватар пользователя bsyomov bsyomov 27 ноября 2010 в 21:58

Что подразумевается под толстым проектом? Smile
При нормальной настройке скорее упрёмся в дисковый ввод/вывод (который часто на VPS не фонтан), или процессор, чем в гигабайт оперативки. Конечно хорошо бы больше, но скорее для кеширования уровня fs например. Отедает больше всего памяти обычно не работающие в данный конкретный момент скрипты, их много быть не может в связи с ограничением по вычислительным ресурсам, а десятки процессов апача бесполезно болтающихся или отдающих статику и результаты работы скриптов медленным клиентам. От этого хорошо помогает правильная настройка и фронтэнд - объём необходимой памяти заметно снижается. Ещё много памяти может отесть Mysql, если задрать сверх всякой меры размеры различных буферов, что часто не имеет смысла.

Аватар пользователя darkdim darkdim 28 ноября 2010 в 11:19

"bsyomov" wrote:
Что подразумевается под толстым проектом? Smile
При нормальной настройке скорее упрёмся в дисковый ввод/вывод (который часто на VPS не фонтан), или процессор, чем в гигабайт оперативки. Конечно хорошо бы больше, но скорее для кеширования уровня fs например. Отедает больше всего памяти обычно не работающие в данный конкретный момент скрипты, их много быть не может в связи с ограничением по вычислительным ресурсам, а десятки процессов апача бесполезно болтающихся или отдающих статику и результаты работы скриптов медленным клиентам. От этого хорошо помогает правильная настройка и фронтэнд - объём необходимой памяти заметно снижается. Ещё много памяти может отесть Mysql, если задрать сверх всякой меры размеры различных буферов, что часто не имеет смысла.

Под "толстым" проектом можно подразумевать проект, перегруженный модулями(хотя начинаешь разбирать, вроде все по делу, все нужно... а вот нужно еще это и это;))) и к фейсбуку прикрутить, и финтишлюшку поставить). Если верить devel, коробочная установка Drupal хавает до 8М(точно не помню), после "настроечек" процесс разрастается у кого как, и по 100М, и по 250М и по 315М и более, что сразу сказывается на нехватке оперативы. без акселератора сервак сразу начинает глючить, с акселератором надо еще и за количеством деток апача присматривать, потому что начинает свопить и медленно "умирает". Первое с чего начинает техподдержка - не хватает оперативы, 2Гб это мало, кеширование невозможно настроить и т.д. Поднимаешь память, тогда начинает упираться в процессор, техподдержка заводит опять песню или о разгоне железа, или про оптимизацию скриптов, начинается перекапывание инета по запросу "оптимизация". Все равно в итоге после всех настроек при посещении переваливающем за 1000 незарегистрированных посетителей сайт начинает "тупить"(зато хоть уже не падает), хотя казалось бы раздает уже статику... и тут мысли начинают витать в сторону... как бы правильно выразиться, на it-patrol есть такой инструмент как limiter(упс, реклама), техподдержка обещает сделать тот же инструмент, но на бесплатном ПО(для них это выгоднее). и тут начинаешь вкуривать философию Drupala, сервер под него должен иметь ювелирную настройку(помимо требованиям к железу) иначе много ресурсов, которых так не хватает, расходуется понапрасну.

Аватар пользователя bsyomov bsyomov 28 ноября 2010 в 15:09

Если 1 процесс друпала разрастается до 200+ Мб, и планируется приличная посещаемость, то надо что-то делать с проектом в первую очередь а не с сервером... Smile Присматривать за кол-вом деток апача не надо, надо ставить фронтэнд и ограничивать их кол-во или вообще избавляться от апача. 1000 незарегистрированных посетителей вырождается в статику и тут надо просто оставить достаточное кол-во памяти под кеш ФС и правильно настроить кеширование со стороны друпала, по возможности вынести кеширование из БД. Еще неплохо при большой нагрузке ограничить кол-во запросов в единицу времени с 1 ip, чтобы разные злые боты не делали пиковой загрузки.

Качественная настройка сервера нужна всегда, друпал никаким исключением тут не является.

П.С. Что такое limiter на it-patrol,т.е. что он собственно делает?

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 28 ноября 2010 в 15:22

"bsyomov" wrote:
П.С. Что такое limiter на it-patrol,т.е. что он собственно делает?

Это наша самописная система, которая рулит нагрузкой на сервантах и не даёт совсем ипануццо серванту в случае жестяка http://www.drupal.ru/node/38104 + много всяких плюшек.
На самом деле,я не представляю какой набор модулей должен быть чтобы 1 процесс жрал 300 метров.
Даже инферно с его 250 модулями укладывается на ура в 256, по крайней мере он не жаловался. Но у нас правда акселлетор, что сокращает потребление рамы. В остальном слушать умного человека:
"gor" wrote:
Надо тюнить настройки апача и mysql.

И вообще по хорошему ставить nginx + fastcgi php связку.

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