Проблема с памятью в моем двигателе рельсов? - PullRequest
1 голос
/ 18 ноября 2011

У меня довольно небольшое приложение Rails 3.1.1, которое молниеносно наращивает память.8-10 кликов в приложении, и я использую почти 1 ГБ ОЗУ.

Мы проверили журнал на медленный запуск запросов MYSQL, ничего там.Мы также проверили журнал Apache, там ничего нет.

Приложение работает с Passenger 3.0

Может ли эта проблема быть связана с каким-то используемым гемом?Это приложение запустилось как приложение Rails 3.0.1, и мы обновили версию rails.В файле gemfile все еще есть ссылки [не рекомендуется?].Вот гемфайл:

gem "rails", "~> 3.1.1"
gem "mysql2", "~> 0.3.6"
gem 'omniauth', '0.2.6'
gem 'json'

group :assets do
  gem "sass-rails", "~> 3.1.4"
  gem "coffee-rails", "~> 3.1.1"
  gem 'uglifier'
end

gem 'jquery-rails'
gem 'execjs'
gem 'therubyracer'
gem 'capistrano'

Спасибо

Ответы [ 3 ]

2 голосов
/ 19 ноября 2011

Все дело в устранении возможностей.Некоторые направления:

  • Работает ли приложение в режиме разработки?Есть ли разница в использовании памяти в режиме разработки / производства?
  • Попробуйте остаться на одной странице, в одном контроллере.Мониторинг памяти постоянно.Это идет вверх?Это только один контроллер или во всех контроллерах?Если он находится только в одном контроллере, вам нужно проверить меньшую кодовую базу.
  • Профиль памяти вашего приложения с помощью таких инструментов, как Bleakhouse , Memorylogic , Scout или Новая реликвия .Проверьте точки доступа к памяти, чтобы найти ее.
  • Устраните зависимости одну за другой, чтобы выяснить, не вызывает ли проблема ошибка в другом геме.
  • Попробуйте другой сервер, например Mongrel, WEBrickили единорогЕсли поведение отличается, это может быть Пассажир.
  • Попробуйте другую версию Ruby, чтобы проверить, сохраняется ли проблема.
1 голос
/ 22 июля 2012

Потому что therubyracer gem.

therubyracer с пассажиром вызывает утечку памяти.

удалите therubyracer gem или используйте версию 0.7.5

0 голосов
/ 18 ноября 2011

Вместо медленных запросов, проверьте на неэффективные запросы - то есть такие, которые загружают много записей из БД, создают много объектов, а затем зацикливают их на рубиновой стороне.

Или используйте профилировщик, например New Relic.

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