Приложение Rails (mod_rails) зависает каждые несколько часов - PullRequest
1 голос
/ 25 октября 2009

Я запускаю приложение Rails через Phusion Passenger (mod_rails), которое некоторое время будет работать без сбоев, затем внезапно замедлится до сканирования (один или два запроса в час) и перестанет отвечать на запросы. Загрузка процессора низкая в течение всего испытания, хотя я не уверен насчет памяти.

Кто-нибудь знает, с чего мне начать диагностировать / исправить проблему?

Обновление: перезапуск приложения время от времени решает проблему, хотя я ищу более долгосрочное решение. Использование памяти постепенно увеличивается (первоначально ~ 30 МБ на экземпляр, становится 40 МБ через час, до 60 или 70 МБ к моменту сбоя).

Ответы [ 3 ]

1 голос
/ 25 октября 2009

Новая реликвия может показать вам комбинированное использование памяти. Engine Yard рекомендует такие инструменты, как Rack :: Bug, MemoryLogic или Oink. Вот хорошая статья о чем-то похожем, что может оказаться полезным.

1 голос
/ 25 октября 2009

Если перезапуск приложения излечивает проблему, лучше всего начать с его оценки использования ресурсов

0 голосов
/ 27 октября 2009

Похоже, у вас какая-то утечка памяти. Если вы хотите устранить проблему, вы можете попробовать установить PassengerMaxRequests немного ниже, пока не выясните, что происходит.

http://www.modrails.com/documentation/Users%20guide%20Apache.html#PassengerMaxRequests

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

Другие советы: -Посмотрите ваши плагины / драгоценные камни и убедитесь, что они в курсе -Проверьте тяжелые действия и запросы, где много потребления памяти (NewRelic отлично подходит для этого) -Вы можете подумать о переходе на REE, так как он имеет лучшую сборку мусора

Наконец, вы можете установить задание cron, которое просматривает ваши текущие экземпляры пассажиров и убивает их, если они превышают определенный порог памяти. Пассажир будет обрабатывать их перезапуск.

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