R14(ошибка превышения квоты памяти) на heroku

У меня есть стандартный 1x dyno на heroku для Rails Application. Я установил веб-параллелизм puma как 1 с помощью команды

heroku config:set WEB_CONCURRENCY=1

Вот мои логи героку

00MB sample#memory_swap=0.00MB sample#memory_pgpgin=68101pages sample#memory_pgpgout=24085pages sample#memory_quota=512.00MB
2020-07-19T16:17:27.965465+00:00 heroku[web.1]: source=web.1 dyno=heroku.175619374.bf5929f5-5290-4852-803b-a191eec97d98 sample#load_avg_1m=0.00 sample#load_avg_5m=0.00 sample#load_avg_15m=0.00
2020-07-19T16:17:27.990534+00:00 heroku[web.1]: source=web.1 dyno=heroku.175619374.bf5929f5-5290-4852-803b-a191eec97d98 sample#memory_total=981.11MB sample#memory_rss=511.95MB sample#memory_cache=0.00MB sample#memory_swap=469.16MB sample#memory_pgpgin=1789258pages sample#memory_pgpgout=1658199pages sample#memory_quota=512.00MB
2020-07-19T16:17:27.993885+00:00 heroku[web.1]: Process running mem=981M(191.6%)
2020-07-19T16:17:27.996828+00:00 heroku[web.1]: Error R14 (Memory quota exceeded)
2020-07-19T16:17:29.457018+00:00 heroku[web.2]: source=web.2 dyno=heroku.175619374.ca710d80-bc87-4452-9750-e74d6e94eb24 sample#load_avg_1m=0.00 sample#load_avg_5m=0.00 sample#load_avg_15m=0.00
2020-07-19T16:17:29.476208+00:00 heroku[web.2]: source=web.2 dyno=heroku.175619374.ca710d80-bc87-4452-9750-e74d6e94eb24 sample#memory_total=618.61MB sample#memory_rss=511.93MB sample#memory_cache=0.00MB sample#memory_swap=106.68MB sample#memory_pgpgin=208265pages sample#memory_pgpgout=77210pages sample#memory_quota=512.00MB
2020-07-19T16:17:29.479858+00:00 heroku[web.2]: Process running mem=618M(120.8%)
2020-07-19T16:17:29.481659+00:00 heroku[web.2]: Error R14 (Memory quota exceeded)
2020-07-19T16:17:41.505992+00:00 heroku[worker.1]: source=worker.1 dyno=heroku.175619374.01e9ad15-b8a6-46fd-bfa0-f6240896bfa0 sample#load_avg_1m=0.00 sample#load_avg_5m=0.03 sample#load_avg_15m=0.02
2020-07-19T16:17:41.531873+00:00 heroku[worker.1]: source=worker.1 dyno=heroku.175619374.01e9ad15-b8a6-46fd-bfa0-f6240896bfa0 sample#memory_total=164.21MB sample#memory_rss=164.20MB sample#memory_cache=0.02MB sample#memory_swap=0.00MB sample#memory_pgpgin=66123pages sample#memory_pgpgout=24084pages sample#memory_quota=512.00MB
2020-07-19T16:17:46.270340+00:00 heroku[worker.2]: source=worker.2 dyno=heroku.175619374.c415ed03-9d64-49d5-b399-00e0b9d9d12e sample#load_avg_1m=0.00 sample#load_avg_5m=0.00 sample#load_avg_15m=0.00
2020-07-19T16:17:46.289815+00:00 heroku[worker.2]: source=worker.2 dyno=heroku.175619374.c415ed03-9d64-49d5-b399-00e0b9d9d12e sample#memory_total=171.94MB sample#memory_rss=171.94MB sample#memory_cache=0.00MB sample#memory_swap=0.00MB sample#memory_pgpgin=68101pages sample#memory_pgpgout=24085pages sample#memory_quota=512.00MB
2020-07-19T16:17:47.854476+00:00 heroku[web.1]: source=web.1 dyno=heroku.175619374.

Мой гемфайл

source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

ruby '2.6.3'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 6.0.3', '>= 6.0.3.2'
# Use postgresql as the database for Active Record
gem 'pg', '>= 0.18', '< 2.0'
# Use Puma as the app server
gem 'puma', '~> 4.1'
# Use SCSS for stylesheets
gem 'sass-rails', '>= 6'
# Transpile app-like JavaScript. Read more: https://github.com/rails/webpacker
gem 'webpacker', '~> 4.0'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem 'turbolinks', '~> 5'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.7'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 4.0'
# Use Active Model has_secure_password
# gem 'bcrypt', '~> 3.1.7'

# Use Active Storage variant
# gem 'image_processing', '~> 1.2'

# Reduces boot times through caching; required in config/boot.rb
gem 'bootsnap', '>= 1.4.2', require: false

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
end

group :development do
  # Access an interactive console on exception pages or by calling 'console' anywhere in the code.
  gem 'web-console', '>= 3.3.0'
  gem 'listen', '~> 3.2'
  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'
end

group :test do
  # Adds support for Capybara system testing and selenium driver
  gem 'capybara', '>= 2.15'
  gem 'selenium-webdriver'
  # Easy installation and use of web drivers to run system tests with browsers
  gem 'webdrivers'
end

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
gem 'rest-client'
gem 'geocoder'
gem 'graphlient'
gem 'redis', '4.1.4'
gem 'sidekiq'
gem 'carrierwave', '~> 2.0'
gem "figaro"
gem "fog-aws"
gem 'carrierwave-aws'
gem 'mini_magick'
gem 'aws-sdk-rails'

Изначально я использовал хобби-дино, но у меня возникла та же проблема, поэтому я перешел на standard 1x, но все тот же. Я использую heroku redis как redis_cache_store в моем приложении rails.

1 ответ

R14(Ошибка превышения квоты памяти) означает, что ваше приложение использует слишком много памяти, чем должно.

Из вашего сообщения выше сложно определить, что вызывает ошибку. Есть несколько случаев, которые вызывают ошибку R14(Превышение квоты памяти) на Heroku. Одна из них - утечки памяти. В моем предыдущем опыте эта ошибка возникает из-за незавершенных циклов в одном из моих файлов. Я думаю, вам следует проверить, не испытывает ли ваше приложение утечки памяти.

Другие вопросы по тегам