Уменьшить объем памяти памяти Mongrel Rails и повысить производительность? - PullRequest
6 голосов
/ 13 мая 2009

Мои сайты rails работают под Mongrel, у меня проблема с объемом используемой памяти. Мои процессы ruby-bin занимают около 66 МБ резидентной памяти. Как я могу уменьшить количество памяти, используемой рельсами?

Не очень экономично иметь много серверов rails, работающих на одной машине, если они потребляют память с такой скоростью. Мои процессы php5 fcgi находятся на 15-25 МБ.

Я довольно незнаком с RoR, поможет ли использование JRuby? Любые комментарии, помогающие уменьшить объем памяти и увеличить производительность, приветствуются.

Ответы [ 4 ]

7 голосов
/ 13 мая 2009

Вы можете взглянуть на Phusion Passenger и Ruby Enterprise Edition , который в наши дни является де-факто стандартной установкой для приложений Rails. Одна из его целей - сокращение использования памяти. Это также проще, чем иметь кучку дворняжек.

3 голосов
/ 14 мая 2009

Вы также можете заменить свой беспородный процесс на Thin , который более эффективен и недавно был исправлен в сборщике мусора (через eventmachine), чтобы сделать его еще лучше.

Мы используем тонкий кластер за внешними интерфейсами nginx с прекрасными результатами.

3 голосов
/ 14 мая 2009

Если вы не привязаны к Apache для чего-то другого, я бы также попробовал nginx с Phusion Passenger. Если вы беспокоитесь об использовании памяти, вы должны увидеть меньшую площадь от nginx, чем у apache, и последняя версия Passenger загрузит, скомпилирует и установит nginx для вас с минимальными головными болями.

1 голос
/ 14 мая 2009

Я бы не сказал, что Пассажир является стандартом де-факто, но он набирает обороты. Мы только что переключились на Nginx + Passenger, и объем памяти в нашем приложении ruby ​​(то есть Mongrels vs. Passenger) сократился с 450 МБ до 295 МБ. Он может сбросить меньше, так как Passenger будет убивать процессоры, если они простаивают (это настраивается), но, конечно, если вы получаете трафик и используете все экземпляры, для которых вы его настроили, то они будут соответственно использовать память .

Обратите внимание, что мы еще не используем Ruby Enterprise Edition в нашей конфигурации (в основном потому, что она еще не доступна в Engine Yard), но мы все еще наблюдаем меньший объем памяти. Первоначальной причиной, по которой мы переключились, была память, но есть и другие преимущества, такие как более быстрая и простая конфигурация для увеличения или уменьшения и т. Д.

...