У нас возникает странная проблема с Rails-приложением на Heroku. Juste после миграции из Rails 3.2.17 в Rails 4.0.3 наш сервер postgresql показывает бесконечное увеличение использования памяти, затем он возвращает следующую ошибку для каждого запроса:
ERROR: out of memory
DETAIL: Failed on request of size xxx
Juste после выпуска приложения с рельсами 4, начнет увеличиваться память postgresql.
Как вы можете видеть на скриншоте ниже, он увеличивается с 500 МО до более 3,5 ГБ за 3 часа
Одновременно, совершение в секунду удваивается. Он прошел от 120 фиксаций в секунду:
до 280 фиксаций в секунду:
Стоит отметить, что когда мы перезапускаем приложение, память переходит к нормальному значению 600 Мо до перехода на более чем 3-го часа через несколько часов (тогда каждый запрос sql показывает ошибку "из памяти" ). Это похоже на то, что убийство соединений ActiveRecord освобождает память на сервере postgresql.
У нас может быть какая-то утечка памяти. Однако:
- Он отлично работал с Rails 3.2. Возможно, эта проблема связана с изменениями, которые мы внесли, чтобы адаптировать наш код к Rails 4 и самому Rails 4.
- Увеличение количества фиксаций в секунду после восстановления Rails 4 кажется очень странным.
Наш стек:
- Heroku, x2 dynos
- Postgresql, Ika plan on heroku
- Единорог, 3 сотрудника на экземпляр
- Rails 4.0.3
- Redis Cache.
- Примечательные драгоценные камни: отложенные задания (4.0.0), активный админ (на главной ветке), удобный мексиканский диван (1.11.2).
В нашем коде нет ничего необычного.
Наша конфигурация postgresql:
- work_mem: 100 МБ
- shared_buffers: 1464MB
- max_connections: 500
- maintenance_work_mem: 64MB
Кто-нибудь когда-либо испытывал такое поведение при переключении на Rails 4? Я ищу идею для воспроизведения.
Вся помощь очень приветствуется.
Спасибо заранее.