2014-11-11 4 views
0

У меня есть приложение RoR, в котором используется Passenger + Nginx.Phusion Passenger потребляет много памяти

Также у меня есть ImageMagick для некоторых обычных задач с изображениями.

В один день (вчера-завтра) я увидел, что мое приложение выйдет из строя, на случай отсутствия памяти!

ImageMagick написать в журнал «Невозможно выделить память».

Когда я проверяю бесплатную ОЗУ, я видел, что там доступно только ~ 120 МБ. (Сводка составляет 1 ГБ).

Most used used Passenger.

Я перезапустил его, и все стало хорошо.

Какая причина этого может быть?

ответ

1
  1. Прежде всего, вы использовали все функции ImageMagick, если не изменить ImageMagick к MiniMagick (вы сохраните часть памяти).

  2. Следующая обработка изображений, как вы работаете с изображениями? Всегда вы можете делать это асинхронно (задача resque/sidekiq/rake в cron - «меньшее решение»), возможно, вы сэкономите немного MB ..

  3. Пассажир, это довольно требовательный к памяти. Попробуйте что-то меньшее, как Thin/Puma.

  4. Уверены ли, ваш код не содержит утечки памяти? Если вы используете рубин 2.1+ есть несколько инструментов, чтобы обнаружить его, например excelent article, или, если нет, то попробуйте запустить приложение в JRuby с профилировщиком памяти Java, например VisualVM

другой вопрос Думаете, вам действительно нужны полные Rails? Rails большой и требует довольно много памяти, может быть Sinatra или для простого API Grape может быть достаточно ...

+0

Спасибо за хороший ответ! 1. Это хороший совет, я подумаю об этом. 2. Это метод, который вызывает, когда администратор делает некоторые действия в панели администратора. 3. Ох. Я прочитал много хороших отзывов о Passenger, но теперь я получу информацию о других серверах) 4. Попробуй первый совет. 5. Мне действительно нужны рельсы. Синатра слишком мала ... – mxgoncharov

+0

Но главный вопрос: почему Пассажир не возвращает память? – mxgoncharov

+0

Ive уже писал, что вы не предоставляете много информации. Вот почему мой ответ настолько общий. Если у вас есть свободный от памяти код (если требования к памяти в пассажирах повышаются, возможно, у вас нет кода без утечек памяти, это может быть в вашем коде или в некоторых ваших драгоценных камнях) , пассажир будет возвращать обратно обратно несколько раз, что зависит от GC и сколько свободного времени сервер имеет .... –

Смежные вопросы