Может кто-нибудь посоветовать мне потребление памяти в Rails? - PullRequest
0 голосов
/ 14 апреля 2011

Я сейчас работаю над приложением Rails, которое, кажется, убивает память на моем iMac до тех пор, пока мне не придется перезагружаться. У меня процессор 2,66 ГГц с 4 ГБ оперативной памяти на OSX 10,6.

Когда я загружаю приложение rails, потребление памяти показывает следующее (ps aux | grep rails):

Gavin      726   0.0  3.8  2590812 158860 s000  S+    9:27am 0:09.90  /Users/Gavin/.rvm/rubies/ree-1.8.7-2011.01/bin/ruby script/rails s 

RSS в крутом 158 860 кб После нескольких запросов к localhost это число увеличивается до:

Gavin      726   0.0 14.1  3031792 592888 s000  S+    9:27am 0:27.00  /Users/Gavin/.rvm/rubies/ree-1.8.7-2011.01/bin/ruby script/rails s 

592 888 кб !!

и при общем использовании разработки он поднимается снова и снова и еще раз:

Gavin      726   1.5 25.0  3487516 1050180 s000  S+    9:27am 0:59.29 /Users/Gavin/.rvm/rubies/ree-1.8.7-2011.01/bin/ruby script/rails s 

Я использую REE, используя RVM ruby 1.8.7 (2010-12-23, уровень обновления 330) [i686-darwin10.6.0], MBARI 0x6770, Ruby Enterprise Edition 2011.01

Приложение использует Rails 3.0.6

Приложение не особенно интенсивно использует SQL и почти при загрузке записей связи не включаются (не требуется в архитектура).

Прав ли я, говоря, что это утечка памяти или есть что-то еще? Я должен смотреть на?

Кто-нибудь может дать совет, как мне это решить?

Спасибо!

Вот полный список используемых драгоценных камней, если есть какие-либо известные там подозреваемые:

source 'http://rubygems.org' 
gem "omniauth", "0.2.0" 
gem "fb_graph" 
gem 'rails', '>=3.0.6' 
gem 'mysql2' 
gem "delayed_job" 
gem "rvm" 
gem "whenever" 
gem "less" 
gem "bcrypt-ruby", :require => "bcrypt" 
gem "twitter" 
gem "paperclip" 
gem "aws-s3" 
gem "RedCloth" 
gem "decent_exposure", :git => "git://github.com/voxdolo/decent_exposure.git" 
# Application monitoring services 
gem 'hoptoad_notifier', ">=2.4.5" 
gem "newrelic_rpm", ">=2.13.4" 
gem "yahoo-weather", "1.2.0", :require => false 
gem "json", "~>1.4.6" 
gem 'will_paginate', :git => "git://github.com/mislav/will_paginate.git", :branch => "rails3" 
gem 'acts-as-taggable-on' 
gem "aasm", ">=2.2.0", :require => "aasm" 
gem 'thinking-sphinx', '2.0.2', :require => 'thinking_sphinx' 
# These gems are not required on the Staging/Production server 
group :development, :test do 
  gem 'capistrano' 
  gem "capistrano-ext" 
  gem "nifty-generators" 
  gem 'factory_girl_rails', :git => "http://github.com/CodeMonkeySteve/factory_girl_rails.git" 
  # Keep on top of the latest RSpec Gems 
  gem "rspec-rails",        :git => "git://github.com/rspec/rspec-rails.git" 
  gem "rspec",              :git => "git://github.com/rspec/rspec.git" 
  gem "rspec-core",         :git => "git://github.com/rspec/rspec-core.git" 
  gem "rspec-expectations", :git => "git://github.com/rspec/rspec-expectations.git" 
  gem "rspec-mocks",        :git => "git://github.com/rspec/rspec-mocks.git" 
  gem 'shoulda' 
  gem "mocha" 
  # gives us the mock_model method for mocha 
  gem 'rspec-rails-mocha', '~> 0.3.0' 
  gem "faker" 
  gem "autotest", ">=4.4.6" 
  gem "autotest-growl" 
  gem "autotest-rails" 
  gem "database_cleaner" 
  gem "redgreen" 
  gem "launchy" 
  gem "faker" 
  gem 'ruby-debug' 
  gem "rcov" 
  gem "rdoc" 
  gem "ruby-prof" 
end

Ответы [ 3 ]

1 голос
/ 17 апреля 2011

Похоже, у вас есть утечки памяти. Попробуйте тыкать с помощью профилировщика памяти: https://github.com/ice799/memprof

1 голос
/ 18 мая 2011

Aasm очень быстро теряет память, когда cache_classes = false (это значение по умолчанию в режиме разработки). Вы используете много драгоценных камней, но я готов поспорить, что за этим стоит aasm.

как уже говорили другие, лучше всего использовать профилировщик памяти.

0 голосов
/ 14 апреля 2011

Проверьте config / newrelic.yml для:

developer_mode: false|true

Если установлено значение «истина», проблема с памятью может быть следующей.

...