Heroku上的Rails 4错误R14(超出内存配额) [英] Rails 4 Error R14 on Heroku (Memory Quota Exceeded)

查看:150
本文介绍了Heroku上的Rails 4错误R14(超出内存配额)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经得到了(显然是常见的)。这就是现在的样子,看起来不错,但我怀疑是因为应用程序重新启动了:

 #heroku重启后
heroku / web.1:source = web.1 dyno = heroku.25566769.3770e52a-ddf3-485a-a88a-ac4fd54ab640 sample#memory_total = 123.62MB

#4分钟后
heroku / web.1:source = web.1 dyno = heroku.25566769.3770 e52a-ddf3-485a-a88a-ac4fd54ab640 sample#memory_total = 276.48MB



更新3:降低金额的麒麟工人到2



这样做后,这是根据New Relic过去6小时每个动态/实例的平均内存使用量:



然后在PaperTrain中输出(也试过LogEntries )是这样的:

  app / web.1:May 26 19:54:08 21ae35ee-5656-4254-9f12-5dc6bb59efa1导轨[6]:内存使用情况:426 076 | PID:6 
app / web.1:May 26 19:54:08 21ae35ee-5656-4254-9f12-5dc6bb59efa1 rails [6]:Oink日志条目完成
heroku / web.1:source = web.1 dyno = heroku.25566769.21ae35ee-5656-4254-9f12-5dc6bb59efa1 sample#load_avg_1m = 0.00 sample#load_avg_5m = 0.00 sample#load_avg_15m = 0.00
heroku / web.1:source = web.1 dyno = heroku .25566769.21ae35ee-5656-4254-9f12-5dc6bb59efa1 sample#memory_total = 431.99MB sample#memory_rss = 406.85MB sample#memory_cache = 0.10MB sample#memory_swap = 25.04MB sample#memory_pgpgin = 198612pages sample#memory_pgpgout = 94432pages

我检查了日志,1小时后我收到了R14错误,现在它一直在上涨,几乎稳定在432MB,并没有再出现错误。所以这似乎解决了问题!如果这种情况发生变化,我会随时更新。

解决方案

如果Papertrail导致问题,请尝试不同的添加。我一直在使用LogEntries,没有太多问题。 https://addons.heroku.com/#logging



同时尝试降低您的Unicorn工作进程,以降低总内存。而不是默认的3(每箱/ dyno),试试2。



https://devcenter.heroku.com/articles/rails-unicorn#unicorn-worker-processes



您也可以在您的应用程序上运行内存分析器:

http://timetobleed.com/memprof-a-ruby-level-memory-profiler/



https://www.ruby-toolbox.com / search?utf8 =%E2%9C%93& q =个人资料


I have been getting the (apparently common) Error R14, not sure when it started but noticed after installing the Papertrail add-on. I also added oink after seeing others mentioning it. I have tried everything others have tried in other SO questions but I can't seem to find the problem / memory leak.

Error R14 (Memory quota exceeded)
heroku/web.1: Process running mem=587M(114.7%)

When I see this, to temporarily fix this, I run heroku restart which works for a while but I want to fix this problem permanently.

From what I can see in Papertrail, the app just keeps loading the same page (home page) over and over again (and its not user traffic):

app/web.1: Completed 200 OK in 436ms (Views: 45.5ms | ActiveRecord: 386.2ms) 
app/web.1: May 25 18:14:52 5d2105e1-d799-4496-a2af-3785e78998db rails[9]: Oink Action: static_pages#home
app/web.1: May 25 18:14:52 5d2105e1-d799-4496-a2af-3785e78998db rails[9]: Memory usage: 378860 | PID: 19
app/web.1: May 25 18:14:52 5d2105e1-d799-4496-a2af-3785e78998db rails[9]: Oink Log Entry Complete 
heroku/web.1: source=web.1 dyno=heroku.25566769.9d9a3da0-db4c-4b51-bc53-b69be9e43cb7 sample#memory_total=209.86MB sample#memory_rss=209.83MB sample#memory_cache=0.02MB sample#memory_swap=0.00MB sample#memory_pgpgin=59278pages sample#memory_pgpgout=5555pages 

and after 2 minutes:

heroku/web.1: source=web.1 dyno=heroku.25566769.9d9a3da0-db4c-4b51-bc53-b69be9e43cb7 sample#memory_total=293.73MB sample#memory_rss=291.94MB sample#memory_cache=0.02MB sample#memory_swap=1.77MB sample#memory_pgpgin=80890pages sample#memory_pgpgout=6147pages `

I also enabled heroku labs:enable log-runtime-metrics from instructions from another question here and from Heroku here

I have also added the New Relic add-on and this is what I see in the Monitoring > Instances tab:

For the Last 7 Days:

For the Last 24 Hours:

I am confused as you can see after 5/24 the memory usage went down and has since stayed down, but in the logs it shows memory being used mem=587M(114.7%) and in the last 24 hours an average of 150M, so I don't understand what is happening. I hope someone can help. Thanks.

Update 1: Added Gemfile

#Gemfile
source 'https://rubygems.org'
ruby '2.1.1'
gem 'rails', '4.1.1'

gem 'puma', '~> 2.8.2'
gem 'turbolinks', '~> 2.2.2'
gem 'pg', '~> 0.17.1'
gem 'rack-attack', '~> 4.0.1'
gem 'memcachier'
gem 'dalli', '~> 2.7.1'
gem 'oink'
gem 'fog', '~> 1.22.0'
gem 'activeadmin', github: 'gregbell/active_admin'
gem 'dynamic_sitemaps', '~> 2.0.0'
gem 'whenever', :require => false
gem 'cancancan', '~> 1.8.0'
gem 'mini_magick', '~> 3.7.0'
gem 'carrierwave', '~> 0.10.0'
gem 'devise', '~> 3.2.4'
gem 'rolify', '~> 3.4.0'
gem 'simple_form', '~> 3.0.2'
gem 'cocoon', '~> 1.2.6'
gem 'friendly_id', '~> 5.0.3'
gem 'nokogiri', '~> 1.6.2.1'
gem 'kaminari'
gem 'impressionist', '~> 1.5.1'
gem 'validate_url'
gem 'searchkick', '~> 0.7.5'
gem 'meta-tags', '~> 2.0.0'
gem 'newrelic_rpm'


group :assets do
  gem 'sass-rails', '~> 4.0.3'
  gem 'bootstrap-sass', '~> 3.1.1.1'
  gem 'uglifier', '~> 2.5.0'
  gem 'coffee-rails', '~> 4.0.1'
  gem 'asset_sync'
  #gem 'jquery-turbolinks'
  gem 'jquery-rails'
  gem 'jbuilder', '~> 2.0.7'
end

group :production do
  gem 'rails_12factor'
end

Update 2: Changed server from Puma to Unicorn

It was pretty simple, following the directions here. And this is what it looks like now, which seems good, but I suspect it was because the application was restarted:

# after heroku restart
heroku/web.1: source=web.1 dyno=heroku.25566769.3770e52a-ddf3-485a-a88a-ac4fd54ab640 sample#memory_total=123.62MB

# after 4 minutes
heroku/web.1: source=web.1 dyno=heroku.25566769.3770e52a-ddf3-485a-a88a-ac4fd54ab640 sample#memory_total=276.48MB

Update 3: Lowered the amount of Unicorn workers to 2

After doing that, this is the average memory usage per dyno/instance for the past 6 hours according to New Relic:

And the output in PaperTrain (and also tried LogEntries) was this:

app/web.1: May 26 19:54:08 21ae35ee-5656-4254-9f12-5dc6bb59efa1 rails[6]: Memory usage: 426076 | PID: 6
app/web.1: May 26 19:54:08 21ae35ee-5656-4254-9f12-5dc6bb59efa1 rails[6]: Oink Log Entry Complete
heroku/web.1: source=web.1 dyno=heroku.25566769.21ae35ee-5656-4254-9f12-5dc6bb59efa1 sample#load_avg_1m=0.00 sample#load_avg_5m=0.00 sample#load_avg_15m=0.00
heroku/web.1: source=web.1 dyno=heroku.25566769.21ae35ee-5656-4254-9f12-5dc6bb59efa1 sample#memory_total=431.99MB sample#memory_rss=406.85MB sample#memory_cache=0.10MB sample#memory_swap=25.04MB sample#memory_pgpgin=198612pages sample#memory_pgpgout=94432pages 

I checked the logs, and after 1 hour I was getting the R14 error and now it has been been going up very little, almost holding steady at 432MB and have not gotten the error anymore. So this seems to have fixed the problem! I will update over time if this changes.

解决方案

If Papertrail is causing a problem, try a different add on. I've been using LogEntries without much of a problem. https://addons.heroku.com/#logging

Also try to lower your Unicorn worker processes so it uses lower total memory. Instead of the default of 3 (per box/dyno), try 2.

https://devcenter.heroku.com/articles/rails-unicorn#unicorn-worker-processes

You can also run a memory profiler on your app:

http://timetobleed.com/memprof-a-ruby-level-memory-profiler/

https://www.ruby-toolbox.com/search?utf8=%E2%9C%93&q=profile

这篇关于Heroku上的Rails 4错误R14(超出内存配额)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆