2009-10-25 2 views
1

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

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

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

ответ

1

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

+0

Спасибо: статья действительно помогла. – igul222

+0

Прохладный. Добро пожаловать! – andHapp

1

Если перезапуск приложения устраняет проблему, поиск ее ресурсов будет хорошим началом.

0

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

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

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

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

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

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

  • Нет связанных вопросов^_^