У нас есть приложение Rails, работающее на heroku 2x dyno. В журналах Paper-trail потребление памяти приложением продолжает линейно увеличиваться даже без запроса к серверу, что указывает на возможную утечку памяти.
Gemfile.
source 'https://rubygems.org
ruby '2.1.2'
gem 'aasm', '~> 3.2.0'
gem 'american_date'
gem 'attr_encrypted'
gem 'sass-rails', '~> 4.0.3'
gem 'bootstrap-sass', '~> 3.2.0.1'
gem 'bugsnag'
gem 'carrierwave', '~> 0.10.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'devise', '~> 3.2.0'
gem 'fog', '~> 1.22.0'
gem 'foreigner', '~> 1.6.1'
gem 'hstore_accessor'
gem 'jbuilder', '~> 2.0'
gem 'jquery-rails'
gem 'jquery-validation-rails', '~> 1.12.0'
gem 'omniauth-google-oauth2', '~> 0.2.0'
gem 'pg', '~> 0.17.0'
gem 'pundit', '~> 0.3.0'
gem 'rails', '4.1.4'
gem 'sdoc', '~> 0.4.0', group: :doc
gem 'simple_form', '~> 3.0.0'
gem 'spring', group: :development
gem 'therubyracer', platforms: :ruby
gem 'turbolinks'
gem 'uglifier', '>= 1.3.0'
gem 'unicorn'
gem 'wicked_pdf'
gem 'wkhtmltopdf-binary'
gem 'stripe', :git => 'https://github.com/stripe/stripe-ruby'
gem 'feature'
gem 'finance'
gem 'cocoon'
gem 'accountingjs-rails'
group :development, :test do
gem 'pry-byebug', '~> 1.3.0'
gem 'pry-rails', '~> 0.3.0'
end
group :development do
gem 'thin'
gem 'rack-mini-profiler'
gem 'rails_best_practices'
gem 'rubocop'
gem 'spring-commands-rspec'
end
group :test do
gem 'capybara'
gem 'codeclimate-test-reporter'
gem 'rspec-rails'
gem 'factory_girl_rails'
gem 'shoulda-matchers', require: false
end
group :production do
gem 'skylight'
end
gem 'newrelic_rpm' #reccommended to load as late as possible
gem 'smarter_csv'
Графики новой реликвии показывают увеличение использования памяти.
Мы попытались понизить версию ruby до 2.0, и использование было постепенно, но менее постепенным.
Есть ли способ узнать, связана ли проблема с нашим кодом? Каковы возможные методы поиска первопричины?
** РЕДАКТИРОВАТЬ: * * (config/unicorn.rb)
worker_processes Integer(ENV['WEB_CONCURRENCY'] || 3)
timeout 15
preload_app true
before_fork do |_server, _worker|
Signal.trap 'TERM' do
puts 'Unicorn master intercepting TERM and sending myself QUIT instead'
Process.kill 'QUIT', Process.pid
end
defined?(ActiveRecord::Base) &&
ActiveRecord::Base.connection.disconnect!
end
after_fork do |_server, _worker|
Signal.trap 'TERM' do
puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to send QUIT'
end
defined?(ActiveRecord::Base) &&
ActiveRecord::Base.establish_connection
end
worker_processes Integer(ENV['WEB_CONCURRENCY'] || 3)
. - person gmuraleekrishna   schedule 20.12.2014heroku config:set WEB_CONCURRENCY=2
- person tagCincy   schedule 20.12.2014