2009-05-13 5 views
6

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

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

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

ответ

7

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

+0

+1 Второй совет пассажира. –

+0

+1 Во-вторых, рекомендация REE, так как она включает исправления MBARI, заставляющие ее потреблять гораздо меньше памяти. Это или 1.9 также использует меньше. Также убедитесь, что вы используете 32-битную ОС, где это возможно. – rogerdpack

3

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

1

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

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

3

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

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