Rails против использования памяти Sinatra? - PullRequest
4 голосов
/ 20 апреля 2011

Кто-нибудь может прокомментировать улучшение процесса перехода в Синатру?

Я считаю, что мой веб-API использует около 100 МБ на процесс Passenger Rails 3. Мне интересно, что было бы лучше, если бы я перешел на Синатру.

Ответы [ 2 ]

9 голосов
/ 23 апреля 2011

Вот случайный нереальный эталонный тест, который даст вам лишь небольшую идею:

               |   Real  | Private | Vir. Priv. |
---------------+---------+---------+------------|
[1]      Rails |  38.6MB |  35.9MB |   76.3MB   |
---------------+---------+---------+------------|
[2]    Sinatra |  18.7MB |  16.2MB |   51.7MB   |
---------------+---------+---------+------------|
[3]     + Haml |  19.6MB |  17.0MB |   53.7MB   |
---------------+---------+---------+------------|
[4]   + Sequel |  24.4MB |  21.7MB |   54.8MB   |
---------------+---------+---------+------------|
  1. Rails 3.0.7, создайте проект оболочки, запустите сервер, сделайте 1 запрос.
  2. Sinatra 1.2.3 с Thin 1.2.11, require 'sinatra'; get('/'){ "Hello" }, сделать 1 запрос.
  3. ... добавить Haml 3.0.25, get ('/'){ haml "%p Hello" }, сделать 1 запрос.
  4. ... добавьте сиквел 3.22.0, DB = Sequel.sqlite, сделайте 1 запрос.

Все тестируются на OS X. Этот тест показывает, что a) Sinatra гораздо более простой, чем Railsи б) вам нужно будет сравнить яблоки с яблоками (в ОС по вашему выбору;), если вы хотите какие-либо значимые цифры.То же приложение с той же функциональностью.

Мои реальные приложения, работающие на Windows с использованием Thin + Sequel + Haml + pg, имеют тенденцию работать около 50-90 МБ на экземпляр (в зависимости от приложения, которое я запускаю 2-4 экземпляраза обратным прокси).YMMV.

0 голосов
/ 20 апреля 2011

Во-первых, как вы измеряете использование памяти?

Рекомендуется использовать Статистика пассажира-памяти для более точного понимания использования памяти (в отличие от верхней и т. Д.).).

В общем, действительно трудно сказать, не выполняя некоторые тесты самостоятельно - использование памяти может сильно различаться в зависимости от того, что на самом деле делает ваше приложение, и Sinatra не обязательно будет означать меньший объем памяти.

Например, если вы используете ActiveRecord, модели кэшируются платформой в рабочей среде, чтобы сократить время загрузки.Это произойдет независимо от используемой вами платформы приложения.

Однако для настройки стека Rails вы можете кое-что сделать.

Поэкспериментируйте с версиями Ruby.REE может иметь некоторые преимущества памяти при использовании с пассажиром.Ruby 1.9.2 имеет множество улучшений производительности.

Посмотрите на опции памяти пассажира:

  • passenger_spawn_method
  • passenger_max_pool_size

Другая вещь, которую вы можете сделать, это удалить неиспользованныечасти самого стека Rails (с использованием различных опций Rails Rack ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...